标签:
C语言中没有和JAVA中一样的String类型,因此,在C语言中,通过使用字符数组来保存字符串,为了和普通的字符数组区分,我们需要在字符串的尾部添加
一个结束标志:‘\0‘,因此,例如字符串:"bht",那么保存这个字符串的字符数组长度为4.
字符串的初始化:
1 char a[4]={‘b‘,‘b‘,‘t‘,‘\0‘}; 2 3 char b[4]; 4 b[0]=‘b‘; 5 b[1]=‘h‘....... 6 7 char c[]="bht";
如果使用第7行的代码的话,该字符数组的长度不是3,而是4,系统会自动在后面添加‘\0‘这个结束标志!
关于puts()和gets()两个函数与printf()与scanf()函数的区别
在xcode中,如果使用puts()和gets()函数的话,编译器会提示这两个函数不安全.为什么呢?下文描述.首先说说gets和puts,这两个分别表示
接收一个字符串和输出一个字符串,可以接收空格和TAB键,而printf和scanf不可以.但是puts和gets不如printf和scanf灵活,后者都可以一次行输出
或者接收多个字符串.
安全性如下程序:
char a[]="bht"; char b[]={‘i‘,‘m‘}; puts(b);
如果在定义字符串的时候(b),后面忘记敲‘\0‘,那它的输出结果则是 imbht 分析可以如下解释:
在内存中的情况:
由于puts和gets都是读取到‘\0才结束,因此,会将后面数组a也会打印到控制台中. 这里有内存分配先后的问题
标签:
原文地址:http://www.cnblogs.com/bhtfly/p/4448874.html