2010年(4)
分类: LINUX
2010-10-05 16:57:57
一、puts
名称: | puts |
功能: | 向显示器输出字符串。 |
头文件: | #include |
函数原形: | int puts(const char *s); |
参数: | s 字符串 |
返回值: | 成功返回输出的字符数,失败返回EOF |
put函数与printf函数在字符串输出中的区别:
puts在输出字符串时,遇到'\0'会自动终止输出,并将'\0'转换为'\n'来输出。
Printf在输出字符串时,遇到'\0'只是终止输出,并不会将'\0'转换为'\n'来输出。
二、strcat
名称: | strcat |
功能: | 字符串连接函数 |
头文件: | #include |
函数原形: | char *strcat(char *restrict s1,const char *restrict s2); |
参数: | s1 字符串1 s2 字符串2 |
返回值: | 返回字符数组1的首地址 |
Strcat能够将字符串2连接到字符串1的后面。要注意的是字符串1必须能够装下字符串2。连接前,两串均以'\0'结束,连接后,串1的'\0'被取消,新串最后加‘'\0'
如:
char name[100]="Mike";
char number[20]="001";
strcat(name,number);
puts(name);
输出为:
Mike001
三、strcpy
名称: | strcpy |
功能: | 字符串拷贝函数 |
头文件: | #include |
函数原形: | char *strcpy(char *restrict s1,const char *restrict s2); |
参数: | s1 字符串1 s2 字符串2 |
返回值: | 返回字符数组1的首地址 |
strcpy将字符串2,拷贝到字符数组1中去,要注意,字符数组1必须足够大,拷贝时'\0'一同拷贝,不能使用赋值语句为一个字符数组赋值。
四、strcmp
名称: | strcmp |
功能: | 字符串比较函数 |
头文件: | #include |
函数原形: | char *strcmp(const char *s1,const char *s2); |
参数: | s1 字符串1 s2 字符串2 |
返回值: | 返回int型整数 |
strcmp对两串从左向右逐个字符比较(ASCLL吗),直到遇到不同字符或'\0'为止。若s1大于s2返回正整数,若s1小于s2返回负整数,若s1等于s2返回0。要注意字符串比较不能用"= =",必须用strcmp.
#include #include typedef struct { char name[20]; char num[20]; }USERINFO; int main() { USERINFO user; char newname[ ]="Rose"; int result; strcpy(user.name,"Mike"); result=strcmp(user.name,newname); if(result!=0) printf("different person!"); else Printf("the same person!"); } |
五、strlen
名称: | strlen |
功能: | 字符串长度函数 |
头文件: | #include |
函数原形: | int strlen(const char *s); |
参数: | s 字符串 |
返回值: | 返回字符串实际长度 |
strlen计算字符串长度并返回,不包含'\0'在内。
如:char str[100]="study";
int length;
length=strlen(str);
printf("%d",length);
输出:5
注意;;;;;;;;;;;;;;;
strcpy 包括\0, srelen 不包括 \0.
六、strtok
名称: | strtok |
功能: | 字符串分割函数 |
头文件: | #include |
函数原形: | char *strtok(char *s,const char *delim) |
参数: | s 欲分割的字符串 delim 分割字符串 |
返回值: | 返回下一个分割后的字符串指针,如果已无从分割则返回NULL |
Strtok可将字符串分割,当strtok在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0字符。
在第一次调用时,strtok必须给予参数s字符串,往后的调用则将参数s设置为NULL.
下面是程序例子:
#include #include int main() { char s[ ]="ab-cd:de;gh:mnpe;ger-tu"; char *delim="-:"; char *p = NULL; printf("%s\n",strtok(s,delim)); while((p=strtok(NULL,delim))) Printf("%s\n",p); } |
输出结果为:
ab
cd
ee;gh
mnpe;ger
tu
一、sprintf 名称: sprintf 功能: 格式化字符串复制函数 头文件: #include 函数原形: int sprintf(char *s,const char *format,.....); 参数: s 目的字符串数组 format 原字符字符串 返回值: 成功返回参数str字符串的长度,失败返回-1 sprintf会把参数format字符串转换为格式化数据,然后将结果复制到参数str所指的字符数组,直到出现字符串结束符\0为止. 下面是程序例子: #include #include main() { struct tm *t; time_t timep; char buff[50]; time(&timep); t=localtime(&timep); sprintf(buff,"%d:%d:%d",t->tm_hour,t->tm_min,t->tm_sec); printf("%s\n",buff); } 运行结果: 12:33:21 总结sprintf的功能可以分为几点; 格式化数字字符串 打印地址信息 sprintf(s, "%p", &i); 利用sprintf 的返回值 二、atoi 名称: atoi 功能: 将字符串转换成整型数 头文件: #include 函数原形: int atoi(const char *nptr); 参数: nptr 字符串 返回值: 返回转换后的整形数 atoi会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束符\0时结束转换,并将结束返回. 三、atof 名称: atof 功能: 将字符串转换成浮点型数 头文件: #include 函数原形: double atoi(const char *nptr); 参数: nptr 字符串 返回值: 返回转换后的符点型数 atof会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束符\0时结束转换,并将结果返回. #include int main() { char *a="-100.23"; char *b="200"; float c; int d; c=atof(a); d=atoi(b); printf("c=%.2f\n",c); printf("d=%d\n",d); } 运行结果: c=-100.23 d=200 四: 函数 strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); strstr原型:extern char *strstr(char *haystack, char *needle); 用法:#include
sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代
itoa。如:
//把整数 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
连接字符串
sprintf 的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连
接字符串,从而在许多场合可以替代strcat,但sprintf 能够一次连接多个字符串(自然也可以同时
在它们中间插入别的内容,总之非常灵活)。比如:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用
最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次
strlen 便已经知道了结果字符串的长度。如:
int len = sprintf(s, "%d", i);