【发布时间】:2021-12-13 14:03:37
【问题描述】:
我有一个 4 行 3 列的文本文件,例如:
1 2 5
3 5 6
8 8 2
1 1 0
我想将第三列从一个文件移到另一个文件,这样新文本将如下所示
5
6
2
0
我已经使用 fscanf 完成了这项工作,因此我每三次使用 fscanf 将其插入到新文件中 除了扫描前两个数字之外,还有更好的方法来访问第三列吗? 谢谢
【问题讨论】:
-
没有。并不真地。如果您 100% 确定第 3 列始终正好是 1 个字符并且位于第 4 个字符位置(从 0 开始),则可以读取整行并将其编入索引。
-
当您使用
fscanf转换整数值时,您无法确定输入行是否包含预期的 3 列。最好用fgets读取整行,用sscanf扫描并检查返回值(= 成功转换的值的数量)是否为3。您甚至可以使用转换4 个值的格式来检测可能包含更多值的行超过 3 列。 -
如果您的输入文件在一行中有 6 个值,
scanf将很难将其与分布在两行中的 6 个值区分开来。同样,如果您有 6 个值分布在 6 行中。如果您关心输入中的空格,scanf可能是错误的工具。
标签: c text multiple-columns