gpt4 book ai didi

c - while循环中scanf的使用

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

我必须使用 scanf 从文件中读取一系列输入。但是在2种情况下会有不同的结果。代码 1- 读取一个整数和一个字符数组。

char plaintext[20];
int started = 0;
int x;


while (scanf("%i,%19[^\n]",&x,plaintext) == 2)
{
if (started == 1)
printf(",\n");
else
started = 1;
printf("i read a line from a file");
}
printf("\n");

这工作得很好。 scanf 读取文件中的每一行,printf() 为每一行输入输出所需的行。

Code2-只读取一个字符数组

char plaintext[20];
int started = 0;

while (scanf("%19[^\n]",plaintext) == 1)
{
if (started == 1)
printf(",\n");
else
started = 1;
printf("i read a line from a file");
}
printf("\n");

在这里,scanf 只读取第一行并只打印一次“我从文件中读取一行”。为什么?

一种解决方案是在代码 2 的 scanf 中使用 %*c。但是为什么代码 1 工作正常,但代码 2 不行。

最佳答案

你需要改变

scanf("%19[^\n]",plaintext)

以便它在读取第一行后读取缓冲区中的换行符。

尝试

scanf("%19[^\n] ",plaintext)

空格读取行尾的换行符

关于c - while循环中scanf的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43703561/

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