最近,我在我的代码块编程,我做了一个小程序,只为爱好在C。
char littleString[1];
fflush( stdin );
scanf( "%s", littleString );
printf( "\n%s", littleString);
如果我创建了一个字符串,为什么代码块允许我保存13个字符?
最佳答案
C没有边界检查,写入数组或动态分配的内存不能被编译器检查。相反,它将导致未定义的行为。
为了防止scanf
的缓冲区溢出,您可以告诉它只读取特定数量的字符,而不读取更多字符。所以要告诉它只读取一个字符,可以使用"%1s"
格式。
作为一个小提示:记住C中的字符串有一个额外的字符,即终止符(character'\0'
)。因此,如果字符串应该包含一个字符,那么大小实际上需要两个字符。
关于c - 一点查询,C语言中的String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37211578/