gpt4 book ai didi

c - fscanf 中的赋值抑制标志

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:25 25 4
gpt4 key购买 nike

请看一下这段代码:

char line[80];
if(fscanf(stdin, "%*[\t\v\f ]%79[^\n]", line) != EOF)
printf("%s\n", line);

输出:

$ gcc line.c -o line
$ ./line
One space at the beginning.
One space at the beginning.
$ ./line
No space at the beginning.

$

现在如果开头没有空格,为什么整个字符串没有按原样打印?

$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

最佳答案

失败是因为"%*[\t\v\f ]"没有匹配,所以后面的格式说明符%79[^\n]未处理且 line 未分配。要跳过前导空格,请将扫描集替换为前导空格:

if(fscanf(stdin, " %79[^\n]", line) == 1)
printf("%s\n", line);

关于c - fscanf 中的赋值抑制标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com