【发布时间】:2017-09-05 02:13:22
【问题描述】:
我的目标是通读一个必须遵循这些格式规定的文本文件:
- 字符之间没有空格/制表符
- 字符必须是非负整数或换行符(无字母/符号)
- 我只能使用 stdlib.h 和 stdio.h 中给出的函数
我正在考虑使用fgetc() 函数逐个字符地读取文件,但我想不出一种方法来测试该字符是否为换行符(不是换行符/n,这将是两个字符在一起,这会破坏逐个字符的想法?)。
按照这个思路,我在想使用getline(),这将否定检查字符是否是换行符的必要性,会更容易(我的想法是对的还是这不会否定这样的要求?)。但是,如果我要这样做,那么遍历将产生的 char 字符串以仍然检查每个单独的字符的最简单方法是什么?
另外,如果有人能想到更简单的方法来使用给定的库检查文件的格式,那将不胜感激。
【问题讨论】:
-
if (
c== '\n') 测试换行符 -
很高兴知道 - 现在肯定会走 fgetc() 的路线。谢谢
-
是的,但是一次读取一个字符而不是一次读取整个缓冲区会更慢。
-
鉴于限制,您只需要检查您是否获得了数字或换行符。请记住,
fgetc()及其亲属返回的是int,而不是char。通常,您会使用来自<ctype.h>的函数(例如isdigit()),但很容易解决不允许使用它们的事实。 -
@stackptr:不要忘记标准 I/O 缓冲输入,以便尽可能多地读取。速度差异通常很小。
标签: c