关闭

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

标签: 字符串c
529人阅读 评论(0) 收藏 举报
分类:
   问题描述:字符串在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++)
    ;
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:240677次
    • 积分:3753
    • 等级:
    • 排名:第8538名
    • 原创:287篇
    • 转载:16篇
    • 译文:0篇
    • 评论:18条
    最新评论