关于字符串读取时未赋值的项的大小问题

img


我在输入11个数字并回车加ctrlz结束时,s[12]的值为什么是-1
如果s[11]是\n的值,那么s[12]是谁的值呢,这是不是和i最后加到12有关呢

-1就是EOF啊。你的循环会先将EOF写入s[12],然后才判断输入的是不是EOF,所以写的有点问题
应该是:

while((c=getchar() ) != EOF)
    s[i++] = c;

Ctrl+Z输入EOF,EOF的定义就是-1
stdio.h中
#define EOF (-1)