suxiang198的博客

技术+想法=实现

[string]C语言中字符串使用需注意的地方

   问题描述:字符串在C语言中使用很多,可以用于输出调试信息。字符串变量即为字符数组,但是在末尾会自动加上一个空字符来进行结尾标示。
   字符串操作:C允许对指针取下标,字符串也可以直接取下标操作,
char ch1;
ch1 = "abcd"[2];
    此时ch1值为c。
   但是字符串指针不可以试图用来改变字符串的值,这样做会导致运行不稳定,例如出现调试错误等,
char *p = "abcd";
    就不能用*p ="d";这样的操作。如果要改变字符串值,可以用字符数组,
char str1[]="abcd";
str1[0] = "d";
   字符串变量的使用:字符串变量初始化时会自动在字符串结尾加上空字符。在实现自己的字符串函数时,要特别注意结尾空字符的使用。对于程序运行过程中要改变字符串变量的操作,与上面的字符串操作注意事项一样要定义为字符串数组。
   字符串的打印:%.ps,用于显示字符串的一部分,p为要显示的字符数量。而%ms用于在长度为m的字段内显示字符串,超过m个的字符串会全部显示。用puts显示字符串,其会自动在最后加上换行符。
   使用scanf输入字符串时,scanf("%s",str1);的str1前不用&,str1为数组名。同时,当输入的字符串有空格字符时,scanf是不会继续往下读的,遇到空格就表示一个字符串读取结束。要允许一次输入一个含有空格的字符串,就要使用gets(str1);了。
   字符串库string.h:
    (1)char *strcpy(char*s1, const char *s2);
要确保s2的长度小于s1的长度,否则会越界继续复制,导致不可预估情况。
使用strncpy(str1, str2, sizeof(str1));更加安全。
    (2)size_t strlen(constchar *s);
返回字符串的长度(不会包括空字符)。
    (3)char *strcat(char*s1, const char *s2);
将s2的内容追加到s1的末尾,与strcpy一样,要确保s1有足够空间来容纳s2。
使用strncat(str1, str2, sizeof(str1)-strlen(str1)-1);
    (4)int strcmp(const char*s1, const char *s2);
s1小于s2,返回小于0的值,s1等于s2,返回0,s1大于s2,返回大于0的值。
   字符串惯用法:
    (1)搜索字符串结尾:
while(*s)
    s++;
while(*s++)
    ;
    (2)字符串复制:
while(*p++ = *s++)
    ;
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suxiang198/article/details/46836935
文章标签: 字符串 c
个人分类: Lang-C
上一篇[Pointer]C中指针与多维数组学习
下一篇[PreProccess]C语言中预处理指令的使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭