如何使用scanf限制用户输入不大于数组的字符串?
到目前为止我尝试过的是:
#include<stdio.h>
int main()
{
const MAXSTRING = 5;
char arr[MAXSTRING] = {};
printf("Enter a string: \n");
scanf("%*s", MAXSTRING-1, arr);
return 0;
}
但这似乎行不通。
最佳答案
使用其中之一:
1 == scanf("%4s", arr)
1 == scanf("%4[^\n]", arr)
1 == scanf("%ms", &ptr) // POSIX 2008, remember to call `free`
第二个很有用,因为 scanf
以任何空格分隔“单词”的默认行为通常没有用。
但是,通常最好完全避免 scanf
并一次输入一行(使用类似 fgets
的东西(但要注意截断和 EOF-without-EOL)或 getline
(POSIX 2008,但在 fgets
方面很容易实现)),然后在其上使用 sscanf
或简单的数组逻辑。
POSIX 引用:
关于c - 如何使用 scanf 来限制用户输入不大于数组的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177451/