gpt4 book ai didi

c - 如何跳过阅读 fscanf 中的内容

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:37 26 4
gpt4 key购买 nike

如果我有以下文本文件:

1 2 3 4 5 6 7 8 9 10 是的

11 12 13 14 15 16 17 18 19 20 是的

我必须遵循以下代码:

  #include <stdio.h>

int main(){
int arr[5][10];

FILE* foo;
foo = fopen("help.txt", "r");

int i, j;
int temp;

while (i<5 && (fscanf(foo, "%d", &temp)) !=EOF ){
arr[i][0]= temp;

for (j=1; j<10; j++){

fscanf(foo, "%d", &temp);
arr[i][j]=temp;

}
i++;
}


for (i=0; i<2; i++){
for (j=0; j<10; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
fclose(foo);
}

...当文本文件只有数字时,它工作得很好,但是当我将字符“Yeah”添加到文本文件时,代码变得疯狂。我如何包括它们?请简单地解释一下,因为我对此还很陌生。我会使用 fscanf(foo, %d%*c, &temp); 吗???另外,如果有换行语句,我将如何处理?

非常感谢

编辑:我最初提供的 e 输入是

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20。

这里一切都被正确打印出来了。在 10 之后向文本文件中添加 yeah 一词时,所有其他数字也都是 10。本质上它不包含 11 12... 到 20. 并打印出: 1 2 3 4 5 6 7 8 9 1010 10 10 10 10 10 10 10 10 10

最佳答案

像这样一次一行地处理数据总是比直接针对文件一次处理一个“标记”更容易。

使用 fgets() 将整行读入一个适当大的缓冲区,让您有机会花时间在解析中来回走动,因为它在内存中只是字节到那一点,你就不会再因为文件的当前位置随着你的阅读而增加而感到困惑。

您的示例转换不起作用,因为您需要类似“n 个数字后跟非数字的东西,然后是行尾”之类的东西,我认为这不能表示为一个简单的 fscanf () 转换字符串。

整行更容易阅读,然后“手动”逐个标记地查看它。参见,例如 strtok(),这通常有点危险,但在这里应该没问题。

关于c - 如何跳过阅读 fscanf 中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584491/

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