gpt4 book ai didi

c - 在 C 中使用 fscanf 跳过行的剩余部分

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

我正在读入一个文件,读入一个数字后,我想跳到该行的剩余部分。一个文件的例子是这个

2 This part should be skipped
10 and also this should be skipped
other part of the file

目前我使用这个循环解决了这个问题:

char c = '\0';
while(c!='\n') fscanf(f, "%c", &c);

然而,我想知道是否有更好的方法来做到这一点。我试过了,但由于某种原因它不起作用:

fscanf(f, "%*[^\n]%*c");

我原以为这会读取新行之前的所有内容,然后还会读取新行。我不需要内容,所以我使用 * 运算符。但是,当我使用此命令时,什么也没有发生。光标没有移动。

最佳答案

我建议你使用fgets()然后是 sscanf() 读取数字。 scanf() 函数很容易出错,您很容易弄错格式字符串,这在大多数情况下似乎都有效,但在某些情况下当您发现它无法处理某些特定的输入格式时会意外失败。

快速搜索 scanf() problems 在 SO 上会显示人们在使用 scanf() 时出错和遇到问题的频率。

取而代之的是 fgets() + sscanf() 会给你更好的控制,你肯定知道你已经阅读了一行,你可以处理你阅读的行以读出整数:

char line[1024];


while(fgets(line, sizeof line, fp) ) {

if( sscanf(line, "%d", &num) == 1 )
{
/* number found at the beginning */
}
else
{
/* Any message you want to show if number not found and
move on the next line */
}
}

您可能希望根据文件中行的格式更改从 line 读取 num 的方式。但是在您的情况下,整数似乎首先位于或根本不存在。所以上面的内容可以正常工作。

关于c - 在 C 中使用 fscanf 跳过行的剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009690/

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