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

原创 2015年07月11日 00:18:15
   问题描述:字符串在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++)
    ;
版权声明:本文为博主原创文章,未经博主允许不得转载。

c语言中字符串操作常见错误及调试方法

1,字符串中预期的“\0”结束符位置不对,待整理 2,字符串结尾中包含"\n"字符,用printf打印字符串,在打印格式后边添加一个字符看看字符串结尾是否包含回车 3,字符数组的index忘记减1...
  • rangf
  • rangf
  • 2013年06月06日 11:18
  • 968

C语言字符串使用注意事项

C语言字符串使用注意事项

C语言中输出string方法c_str()用法

今天突然用printf("%s",str);//str  是一个string 的时候突然出现乱码,就查了一下为什么。任何时候只有自己敲代码的时候才能发现,, 可以用cout 语法: cons...

java分割字符串split()使用需注意的地方,转义字符使用

在Java程序中,由于系统类库的支持,分割字符串变得很容易,但是,在使用spilt方法时,有些细节不容忽视。当使用”+”、”?”、”\”、”“、”^”、”.”等特殊字符分割字符串时,若不进行特殊字符的...

struts2标签使用需注意的几个地方

struts2标签使用需注意的几个地方 1.在jsp页面上直接使用struts2的s标签,要求必须经过FileterDispatcher过滤,否则总会报错  org.apache.jasp...

学习c语言时需注意的问题

  • 2010年05月10日 18:40
  • 68KB
  • 下载

C语言字符串函数和C++string类中的部分函数的使用

C语言字符串函数1、void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值.2、void *me...

c语言中字符串比较易错的地方

问题: 源代码由C++代码转化而来,所以对于C风格字符串的比较,仍然使用C++中比较C风格字符串的方式 char* pstr = "enable"; if (pstr == "enable")...

从C++转到Java需注意的地方

  • 2010年11月14日 15:05
  • 7KB
  • 下载

return在递归调用时需注意的地方

注意点一:一层一层返回 return:从调用函数
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[string]C语言中字符串使用需注意的地方
举报原因:
原因补充:

(最多只允许输入30个字)