使用两个连续的gets对两个字符数组c1与c2进行输入操作。当两个字符数组都是长度为一的字符数组时,第二个gets执行完毕后c1的值会被修改为'\000'。
如果将c1与c2的长度改为大于一的长度,c1在c2被赋值后就不会被修改为'\000'。这是为什么?


使用两个连续的gets对两个字符数组c1与c2进行输入操作。当两个字符数组都是长度为一的字符数组时,第二个gets执行完毕后c1的值会被修改为'\000'。
如果将c1与c2的长度改为大于一的长度,c1在c2被赋值后就不会被修改为'\000'。这是为什么?


关注其一般形式为:
gets(char str[])
1.从终端输入一个字符串到字符数组,并得到一个函数值。
2.该函数值是字符数组的起始地址。
示例代码:
#include<stdio.h>
int main()
{
char str[10];
gets(str);
puts(str);
return 0;
}
char c1[100], c2[100];
gets(c1);
gets(c2);
char c1[1], c2[1];
gets(c1);
gets(c2);
printf("c1: %c, c2: %c\n", c1[0], c2[0]);
输入字符a和字符b,输出结果为"c1: , c2: b",可以看到c1的值被修改为了空字符。