C语言 itoa函数及atoi函数
toa函数及atoi函数 2007-05-11 13:52 C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number 'num' is %d and the string 'str' is %s. n" , num, str); } itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。
将整数转换成字符串
将整数转换成字符串请编写一个 C 函数,该函数将给定的一个整数转换成字符串。【本程序在Dev C++ 4.9.9.2 下编译通过】下面的这个算法比较傻,垃圾的很,显示了一个C语言新手所应有的水平。而且处理不完全,算法考虑不周到,代码过于啰嗦,不够简洁,紧接着这个后面会有一个较为简洁、完全的代码。char * IntToStr(int Number){ char ch,*str,*t; int i,Temp,Len=0; str = (char *)malloc(11*sizeof(char)); t = str; Temp =Number; while(Temp != 0) { *t = (Temp%10)+0x30; Temp = Temp/10; Len++;
字符串操作函数
http://learn.akae.cn/media/ch25s01.html1. 字符串操作函数 请点评程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。无论多复杂的符号处理都是由各种基本的字符串操作组成的,本节介绍如何用C语言的库函数做字符串初始化、取长度、拷贝、连接、比较、搜索等基本操作。1.1. 初始化字符串 请点评#include <string.h> void *memset(void *s, int c, size_t n); 返回值:s指向哪,返回的指针就指向哪memset函数
Analyzing Strings with sscanf
Analyzing Strings with sscanfThe counterpart or "opposite" of sprintf is sscanf. It looks at a string, and extracts values from it according to another string with format specifiers. It then places the values it has extracted in its arguments. The arguments must be variables, or other things that you can assign values to. For example, after the following code segment, the variable f will contain -3.6, and the variable i will contain 17:float f; int i; string the_string = "foo -3
sscanf()详解
sscanf()的一些使用说明 http://www.cppblog.com/tdweng/archive/2010/06/09/113495.html这里有些sscanf()的一些使用说明,都是从论坛,Blog里整理出来的。供大家使用。 通过学习和使用个人认为,在字符串格式不是很复杂,但是也并不简单的时候用这个函数比较合适,这个尺度就要靠自己把握了,字符串不是很复杂,但自己写个处理的函数比较麻烦,效率也不高,就用这个函数,如果字符串很复杂,那就用正则表达式吧。不多说了,看看下面这些介绍和列子吧!名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:Int sscanf( s
sscanf百科
http://blog.chinaunix.net/u3/116013/showart_2287271.htmlsscanf() - 从一个字符串中读进与指定格式相符的数据. 头文件:stdio.h 原型:Int sscanf( const char *, const char *, ...);int scanf( const char *, ...); 说明:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | 't' | 'n' | 非%符号} 注:1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数
sscanf()和正则表达式的结合
sscanf()和正则表达式的结合http://hi.baidu.com/jangill/blog/item/e6dbca94663ce712d31b708b.htmlsscanf,表示从字符串中格式化输入 上面表示从str中,输入数字给x,就是32700 久以前,我以为c没有自己的split string函数,后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了。 sscanf是一个运行时函数,原形很简单: int sscanf( const char *buffer, const char *format [, argument ] ... ); 它强大的功能体现在对format的支持上。 我以前用它来分隔类似这样的字符串2006:03:18: int a, b, c; ss
正则表达式和sscanf
出处:http://blog.csdn.net/phil2036/archive/2009/05/27/4221704.aspx感谢原文作者分享。 在看这篇文章之前建议你先了解一下什么是正则表达式,具体不重复了,google一下能出一大堆,不过这篇文章比较好,贴个url http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm,作者说30分钟能看完的不是地球人,但是我15分钟就看完了还记住了90%以上,好吧我来自火星,玩笑到此结束,下面切入正题。 本文的命题源自于这样的一个url,protocol://ip:port/chn/mode,比如说,dv://192.168.1.253:65001/1/1。如果我要解析出来
H sscanf,scanf,fscanf与正则表达式
表头文件 #include(stdio.h )定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。# include < stdio. h>int main( ){ const char * s = "iios/12DDWDFF@122" ; char buf[ 20] ; sscanf ( s, "%*[^/]/%[^@]" , buf ) ; printf ( "%sn" , buf ) ;
信号量和互斥锁
来自:linux那些事我是USB 网名为卖血上网的哥们说话了,那么到底什么是信号量?或者什么是互斥锁?先说互斥锁.它诞生于这样一个背景.这个世界上,有些东西只能属于某一个人,或者说在一个时间里只能属于一个人,这你承认吧,比如一个女孩的心.当你要追求一个女孩时,你首先会去了解其人是否名花有主,若是否,你才会去追求,若已然有主,那么你只能放弃,或者准确的说,你只能等待.当然你可以很激昂的说,如果等待可以换来奇迹的话,我宁愿等下去,哪怕一年,抑或一生!然而,她爱的是他,终究不是你,所以你伤悲,流泪,却打不开她心中那把锁.这里你应该就能感觉
Linux下信号灯的使用
作者:杨硕,华清远见嵌入式学院讲师。一、信号灯简介:Linux支持系统5的信号灯(semaphore),是一种进程间通信的方式,只不过它和管道、FIFO或者共享内存等不一样,信号灯主要用于同步或者互斥对共享资源的访问,它的发明来源于火车运行系统中的“信号灯”,利用信号灯可以实现 “PV操作”这种进程间同步机制。P操作是获得资源,将信号灯的值减1,如果结果不为负则执行完毕,进程获得资源,否则进程睡眠以等待资源别的进程释放资源;V操作则是释放资源,给信号灯的值加1,释放一个因执行P操作而等待的进程。二、信号灯的两种类型1、二值信
关于C语言结构体赋值(linux内核风格)
1 对成员赋值.例如结构体struct st1 {int a;int b;int c;}1.1 用{}形式.struct st1 st1 = {1,2,3);1.2 linux kernel风格.struct st1 st1 = {.a = 1;.b = 2;};//注 此风格(即在成员变量之前加点“.”),可以不按成员变量的顺序进行赋值。如可以为struct st1 st1 = {.c = 3;.a = 1;.b = 2;};2 对整体赋值.struct st1 a, b;b = a;3 结构体作为函数返回值对另一个结构体赋值.struct st1 func1();struct st1 a = func1();举例:[ctest]# vi t.c #include <stdio.h>struct st1 { int e1; int e2;};struct st1 func1(){ stru
实时调度
实时调度 参考《多线程编程指南》1.POSIX 标准指定了三种调度策略:先入先出策略 (SCHED_FIFO)、循环策略 (SCHED_RR) 和自定义策略 (SCHED_OTHER)。SCHED_FIFO 是基于队列的调度程序,对于每个优先级都会使用不同的队列。SCHED_RR 与 FIFO 相似,不同的是前者的每个线程都有一个执行时间配额。SCHED_FIFO 和 SCHED_RR 是对 POSIX Realtime 的扩展。SCHED_OTHER 是缺省的调度策略。提供了两个调度范围:进程范围 (PTHREAD_SCOPE_PROCESS) 和系统范围(PTHREAD_SCOPE_SYSTEM)。具有不同范围状态的线程可以在同一个系统甚至同一个进程中共存。进程
进程控制--进程的其他操作
一、获得进程ID 系统调用getpid用来获取当前进程的ID。输入命令man 2 getpid可获得该函数的声明:#include <sys/types.h>#include <unistd.h>pid_t getpid(void); 程序7-9是一个使用getpid简单的例子#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){pid_t pid;if ((pid = fork()) == -1){ printf("fork error!n"); exit(1);}if (pid == 0) printf("getpid return %dn",getpid());exit(0); } 运行程序结果如下:$ ./7-9getpid return 5
linux/unix中设置线程优先级
在linux下我们可以通过int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);来创建线程,但是如何设置线程的优先级呢?在讨论这个问题的时候,我们先要确定当前线程使用的调度策略,posix提供了int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);函数来获取所使用的调度策略,它们是:SCHED_FIFO, SCHED_RR 和 SCHED_OTHER。我们可以使用int sched_get_priority_max(int policy);int sched_get_priority_min(int policy);来获取线程线程可是设置的
Linux调度策略及线程优先级设置
Linux调度策略及线程优先级设置 Linux内核的三种调度策略:1,SCHED_OTHER 分时调度策略,2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平Linux线程优先级设置首先,可以通过以下两个函数来获得线程可以设置的最高和最低优先级,函数中的策略即上述三种策略的宏定义:int sched_get_priority_max(int policy);int s
using select on a fifo
The right way to handle on-going input from file descriptors is to use select(). All readable events are flagged (one such event is “end of file”, which is indicated by a 0-sized read()). For example, if we’re reading from file descriptor fd: fd_set rfds; int rc; FD_ZERO(&rfds); FD_SET(fd, &rfds); tv.tv_sec = 1; tv.tv_usec = 0; rc = select(fd + 1, &rfds, NULL, NULL, &tv); if (rc > 0) { char buf[80]; ssize_t got = read(fd, buf, sizeof(bu
进程间通信系列--管道
进程间通信系列--管道管道可以说是最古老的IPC形式,所谓管道,是指进程间建立的一条通信的通道,从本质上看,管道是UNIX文件概念的推广管道通信的介质是文件,先看一下管道的特点:1.管道的特点: (1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; (2)无名管道只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);后来发展了FIFO(也称有名管道) (3)单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,
使用 getopt() 进行命令行处理
Chris Herborth (chrish@pobox.com), 自由撰稿人, 作家Chris Herborth 是一位屡获殊荣的高级技术作者,十余年来撰写了许多篇操作系统和编程方面的文章。在陪伴儿子 Alex 或妻子 Lynette 之余,他设计、编写和研究(也就是玩)视频游戏。简介: 所有 UNIX® 程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与其他程序或用户进行交互的主要手段。具有可靠的复杂命令行参数处理机制,会使得您的应用程序更好、更有用。不过很多开发人员都将其宝贵的时间花在了编写自
shmget() -- 建立共享内存
shmget() -- 建立共享内存版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://leezen.blogbus.com/logs/19564086.html #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg);key_t key----------------------------------------------- key标识共享内存的键值: 0/IPC_PRIVATE。 当key的取值为IPC_PRIVATE,则函数shmget()将创建一块新的共享内存;如果key的取值为0,而参数shmflg中设置了IPC_PRIVATE这个标志,则同样将创建一块新的共享内存。 在