【发布时间】:2022-01-07 13:46:11
【问题描述】:
我有一个这种格式的txt文件:
11
10
BU
1U
0U
0U
...
我想从 C 文件中一个一个地读取每个数字/字符。 前两行包含 2 个整数,其余行首先包含一个字母/整数,然后是一个字母。 不幸的是,我不知道如何实现这一点,因为你不知道你读的是整数还是字符。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
类似
if (scanf("%d", &num) != 1) //not a number, read the string? -
也许是
char buf[4]; fgets(buf, sizeof buf, stdin);?然后,处理字符串。 -
@chux-ReinstateMonica 谢谢。为什么缓冲区的大小是 4 而不是 2?
-
fgets()读取 line 并形成 string。每行有多少个字符?第一行可能是'1'、'1'、'\n'。要将其保存为 string 需要多少个char? (注意:在 C 中,strings 末尾有一个 null 字符。) -
我知道前两行总是整数。我了解您愿意以不同的方式对待他们。 “更简单”的方法——除了从长远来看确实不更容易——是使用
fscanf和%d。但是fscanf与您将要在其余行上使用的fgets混合得非常糟糕,并且还有许多其他问题。使用fgets将每一行作为纯文本读取确实会更容易。然后要将前两行转换为整数,只需在您阅读的行上使用atoi。这应该很容易。