使用fscanf到达特定行后,如何读取整行?

时间:2017-10-14 15:15:19

标签: c

我有一个如下文字文件。我使用fscanf进行读取,直到它看到"找到",然后将该行中的所有其他内容读入数组。

text text some words text 
text hello text text
text text random text
world

found read1 read2 read3
don't
read any of this

到目前为止,我有以下内容):

while(fscanf(file, "%s", var) != EOF){
    if(strcmp(var, "found") == 0){
        //put 'read1' 'read2' 'read3' into an array
    }
} 

如何读到该行的结尾?感谢

2 个答案:

答案 0 :(得分:3)

fgets函数将一直读到行或文件的末尾 - 以先到者为准!它将从您当前的文件读取点读取。

Here's some documentation for fgets,摘录:

char line[LINE_MAX];
while (fgets(line, LINE_MAX, file) != NULL) {
..
}

修改
然后在该行上使用字符串操作来提取您想要的内容。 strtoksscanf都可以开始。我也非常喜欢strchr

答案 1 :(得分:0)

1

fgets (name, 50, stdin);

50是缓冲区的最大长度。

2

scanf ("%[^\n]%*c", name);

[]是扫描集字符。 [^\n]告诉我,输入不是换行符'\n'。然后使用%*c从输入缓冲区读取换行符(未读取),*表示此读取输入被丢弃(赋值抑制),因为您不需要它