所以我正在编写一个小程序(我是 C 新手,来自 C++),我想接收一个最大长度为 10 的字符串。
我将一个字符数组声明为
#define SYMBOL_MAX_LEN 10 //Maximum length a symbol can be from the user (NOT including null character)
.
.
.
char symbol[SYMBOL_MAX_LEN + 1]; //Holds the symbol given by the user (+1 for null character)
那么为什么当我使用它时:
scanf("%s", symbol); //Take in a symbol given by the user as a string
我可以输入“01234567890”,程序仍会存储整个值吗?
我的问题是:
- scanf 不会阻止值在之后记录在相邻的内存块中
symbol
吗? - 如何防止用户输入大于 length 的值
SYMBOL_MAX_LEN
? - scanf 是否将空终止字符
symbol
自动放入,还是我需要手动执行?