一个小查询,C中的字符串

Nic*_*ozo 0 c string codeblocks

最近我在我的代码块编程,我做了一个小程序只是为了C的爱好.

char littleString[1];

fflush( stdin );
scanf( "%s", littleString );
printf( "\n%s", littleString);
Run Code Online (Sandbox Code Playgroud)

如果我创建了一个字符串,为什么CodeBlocks允许我保存13个字符?

Som*_*ude 5

C没有边界检查,编写超出数组的范围或动态分配的内存不能被编译器检查.相反,它会导致未定义的行为.

为防止缓冲区溢出,scanf您可以告诉它只读取特定数量的字符,仅此而已.所以告诉它只读一个你使用格式的字符"%1s".

作为一个小注意事项:请记住,C中的字符串中有一个额外的字符,即终结符(字符'\0').因此,如果您的字符串应包含一个字符,则实际大小必须为两个字符.