繁体   English   中英

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

[英]After using fscanf to get to a specific line, how to read that entire line?

我有一个如下文本文件。 我使用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
    }
} 

我怎么才读到该行的结尾? 谢谢

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

这里有一些关于fgets的文档 ,摘录如下:

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

编辑:
然后在该行上使用字符串操作来提取您想要的内容。 无论是strtok还是sscanf都可以开始。 我也非常喜欢strchr

1。

fgets (name, 50, stdin);

50是缓冲区的最大长度。

2。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM