函数
字符串相关函数
常用字符串函数
序号 | 函数&目的 |
---|---|
1 | strcpy(s1, s2);复制字符串s2到字符串s1。 |
2 | strcat(s1,s2);连接字符串s2到字符串s1的末尾。 |
3 | strlen(s1);返回字符串s1的长度。 |
4 | strcmp(s1,s2);如果s1和52是相同的,则返回0﹔如果s1<s2则返回小于0;如果s1>s2则返回大于0。 |
5 | strchr(s1,ch);返回一个指针,指向字符串s1中字符ch的第一次出现的位置。 |
6 | strstr(s1,s2);返回一个指针,指向字符串s1中字符串s2的第一次出现的位置。 |
字符串函数应用案例
#include<stdio.h>
#include<string.h>
void main(){
char str1[12]="Hello";
char str2[12]="World";
char str3[12];
char ch="W";
int len;
//复制 str1 到 str3
strcpy(str3,str1);
printf("str3=%s\n",str3);//Hello
//连接 str2 到 str1的后面
strcat(str1,str2);
printf("str1=%s\n",str1);//Hello World
//返回 str1 的长度
len=strlen(str1);
printf("len(str1)=%d\n",len);//
//如果 str1 和 str2 是相同的,则返回0﹔如果 s1<s2 则返回小于0;如果 s1>s2 则返回大于0。
printf("%d\n",strcmp(str1,str2));
//返回一个指针,指向字符串s1中字符串s2的第一次出现的位置。
printf("%p\n",strchr(str2,ch));
}
字符串(字符数组)使用注意事项和细节
(1)程序中往往依靠检测 ‘\0’ 的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。因此,字符串长度不会统计 ‘\0’,字符数组长度会统计。
(2)在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度,否则,在输出字符数组时可能出现未知字符。
(3)系统对字符串常量也自动加一个 ‘\0’ 作为结束符。例如"C Program”共有9个字符(空格也算),但在内存中占10个字节最后一个字节 ‘\n’ 是系统自动加上的。
(4)定义字符数组时,如果给的字符个数比数组的长度小,则系统会默认将剩余的元素空间,全部设置为’\0’,比如char str[6] = “ab”, str内存布局就是[a][b][\0][\0][\0][\0]
。
案例
#include<stdio.h>
void main(){
char str1[]={"I am happy"};//默认后面加 '\0'
char str2[]="I am happy";//省略 {},默认后面加 '\0'
char str3[]={'I','a','m','h','a','p','p','y'};//字符数组后面不会自动加 '\0',可能乱码
char str4[5]={'C','h','i','n','a'};//字符数组后面不会自动加 '\0',可能乱码
printf("\n str1=%s",str1);//ok
printf("\n str2=%s",str2);//ok
printf("\n str3=%s",str3);//乱码
printf("\n str4=%s",str4);//可能会乱码
}