C语言中没有字符串数据类型,它是通过字符数组来处理字符串的,即用字符数组来存储字符串。值得注意的是,这是必须在字符数组末尾加上串结束符’\0’,例如,对于字符串数组char chJob[8],若用来存放字符串”driver”,则在内存中,该字符数组存放形式如下图所示。
d | r | i | v | e | r | \0 |
|
chJob[0] chJob[1] chJob[2] chJob[3] chJob[4]chJob[5] chJob[6] chJob[7]
在系统中,字符串的最后有一个串结束标志’\0’,如果没有这个字符串结束标志,则chJob是一个一般的字符数组,将不能使用有关字符串的标准库函数。
由于函数getch()只接受从键盘输入的字符,不进行回显,所以,可以使用putchar()将输入的字符串显示在屏幕上。
在习题2中
gets(chParty);
此处用gets(chParty)整体输入字符串,系统会自动在字符串末尾加上结束标志’\0’,也可以使用scanf(“%s”,chParty),不同之处在于前者遇回车符结束输入,后者则遇到空格认为输入结束。
字符串和字符数组的输入
逐个字符输入。可以使用循环语句逐个输入每个字符数组元素,即将字符一个一个地输入。例如:
char chTest[10]; int i;
for(i=0;i<10;i++)
chTest[i]=getch();
也可以用scanf(“%c”,&chTest[i]);
整体输入。字符数组可以整体输入或输出,这是和数值型数组不同的地方。整体输入可以使用gets()函数或scanf()函数的%s格式,例如:
char chTest[10]
gets(chTest);
或者:
scanf(“%s”,chTest);
整体输入时使用gets()函数或scanf()函数的差别是:scanf()以回车或空格结束输入,而get()以回车作为输入结束符。所以若想输入其中带空格的字符串,应该使用gets()函数。