我有一个文件,我想用fgets()
逐行读取这个文件的内容。这个文件有10行。每一行都应该包含单词"day"(在文件中出现5次(或单词"night"(在文档中出现5多次((两者都用小写(。
每行也可以由单词"day"或"night"前后的空白组成,并且每行必须包含一个数字(3, 11)
或一个小写字母(a,b,c)
。
例如:
day 3
night 11
night a
night b
day 11
night c
night 3
day a
day c
day b
我的想法是,如果出现"白天"或"夜晚",首先用strcmp()
检查n
之前的每一行。如果是,那么我想知道这个"白天"或"夜晚"是否存在(3, 11)
或(a,b,c)
。我的想法如下:如果我删除每行中的所有空格,并确定后面跟着"day"或"night"的数字或字母,该怎么办。问题是我被困在这里了,我不知道什么是确定这一点的最佳方法。我所有的想法都是一种难以实施的方式。
使用fgets()
缓冲区作为sscanf()
的输入,并让函数为处理空白
char w1[10], w2[10];
fgets(buf, sizeof buf, handle);
if (sscanf(buf, "%9s%9s", w1, w2) != 2) /* error */;
// w1 is "day" or "night"
// w2 is "a", "b", ... or "11", "3", ...