scanf() 不接受空格

Ann*_*inn 3 c c++ scanf

我需要一个 scanf() 调用来接受空格(没有制表符或换行符,只有' '空格字形)。

char buffer[2048];
scanf(" %2048[0-9a-zA-Z ]s", buffer);
Run Code Online (Sandbox Code Playgroud)

我从这个问题的答案中得到的这个格式说明符:

如何使用 scanf 允许输入空格

虽然它可以很好地接受第一个输入序列,但它会在第一个空白字符所在的位置终止,并带有一个空字符。这是怎么回事?我可能使用了错误的格式吗?

我应该说,我在这里使用 scanf() 是因为安全不是问题;我是唯一会使用这个特定程序的人,而且输入的格式是严格的。

Sat*_*ish 6

使用scanf("%[^\n]",buffer);. 它将接受空白。

示例程序-

int main()
{
    char buffer[2048];
    printf("Enter the string\n");
    scanf("%[^\n]",buffer);

    printf("%s\n", buffer);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出-

root@sathish1:~/My Docs/Programs# ./a.out 
Enter the string
abc def ghi ijk
abc def ghi ijk
root@sathish1:~/My Docs/Programs# 
Run Code Online (Sandbox Code Playgroud)