gpt4 book ai didi

我可以让 fscanf 不跳过空行吗?

转载 作者:行者123 更新时间:2023-12-04 11:43:49 29 4
gpt4 key购买 nike

我试图让我的程序从文件中读取输入,但不跳过 fscanf 通常执行的空行。扫描文件的文件和循环是:

 inFile = fopen("text.txt", "r");

for(i = 0; fscanf(inFile, "%s", &input[i]) != EOF; i++){
printf("%d %s\n", i, input[i]);
}

哪些输出:

0 one
1 two
2 three
3 four
4 five
5 six
6 seven
7 eight
8 nine
9 ten
10 eleven
11 twelve
12 thirteen
13 fourteen
14 fifteen
15 sixteen
16 seventeen
17 eighteen
18 nineteen
19 twenty
20 thirty
21 forty
22 fifty
23 sixty
24 seventy
25 eighty
26 ninety

这不是我想要的。我希望正在阅读的文本代表它所说的数组中的位置。即在 input[89] 处找到“ninety”。

正在读取的文件是:

one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty









thirty









forty









fifty









sixty









seventy









eighty









ninety

这些词中的每一个都应该代表它是从哪一行读取的。我在 20 多行之间添加了空格,因此我可以使用 i 来表示正在读取的数据行。简而言之,我正在为文本生成器生成一个数字,该数字将读取

999.99

作为

nine hundred ninety-nine and 99/100

tl;dr 我不想硬编码数组中包含单词的位置,所以我试图让迭代器完成工作,并且需要读取空行以占据它们在数组。

有什么方法可以让 fscanf 完成这里的工作?还是我应该使用其他东西?

谢谢

最佳答案

我认为你最好使用 fgets() .如有必要,您可以在生成的字符串上使用 sscanf() 来解析它。

编辑 - 像这样:

inFile = fopen("text.txt", "r");
size_t i = 0;

while (fgets(input[i], LINE_SIZE, inFile))
{
printf("%d %s\n", i, input[i]);
++i;
}

关于我可以让 fscanf 不跳过空行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963577/

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