我需要一个 scanf() 调用来接受空格(没有制表符或换行符,只有' '空格字形)。
char buffer[2048];
scanf(" %2048[0-9a-zA-Z ]s", buffer);
Run Code Online (Sandbox Code Playgroud)
我从这个问题的答案中得到的这个格式说明符:
虽然它可以很好地接受第一个输入序列,但它会在第一个空白字符所在的位置终止,并带有一个空字符。这是怎么回事?我可能使用了错误的格式吗?
我应该说,我在这里使用 scanf() 是因为安全不是问题;我是唯一会使用这个特定程序的人,而且输入的格式是严格的。
使用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)
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |