对于你上面说道的问题,一般程序员会开辟一个空间较大的字符缓冲区,读入后把字符串拷贝到c里面。
但是任何程序如果死劲玩都能玩出bug。所以对于这种问题,最好约束用户,而不是完美程序。
用fgets函数来代替,它的第二个参数就可以限定缓冲区的大小,第三个参数应该指定为标准输入设备stdin
char *fgets(char *str, int n, FILE *stream);
所以你的程序可以这样写:
char c[5];
fgets(c,5,stdin);
printf("%s\n",c);