我需要一个 scanf() 调用来接受空格(没有制表符或换行符,只有 ' '
空格字形)。
char buffer[2048];
scanf(" %2048[0-9a-zA-Z ]s", buffer);
这个格式说明符是我从这个问题的答案中得到的:
how-do-you-allow-spaces-to-be-entered-using-scanf
虽然它很好地接受了第一个输入序列,但它在第一个空白字符所在的位置终止,并带有一个空字符。这是怎么回事?我可能使用了错误的格式吗?
我应该说,我在这里使用 scanf() 是因为安全不是问题;我是唯一会使用这个特定程序的人,而且输入格式严格。
最佳答案
使用 scanf("%[^\n]",buffer);
。它将接受空格。
示例程序-
int main()
{
char buffer[2048];
printf("Enter the string\n");
scanf("%[^\n]",buffer);
printf("%s\n", buffer);
return 0;
}
输出-
root@sathish1:~/My Docs/Programs# ./a.out
Enter the string
abc def ghi ijk
abc def ghi ijk
root@sathish1:~/My Docs/Programs#
关于c++ - scanf() 不接受空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256697/