使用fscanf到达特定行后,如何读取整行?
我有一个如下的文本文件。我使用fscanf进行读取,直到它看到“found”,然后将该行中的所有内容读取到一个数组中使用fscanf到达特定行后,如何读取整行?,c,C,我有一个如下的文本文件。我使用fscanf进行读取,直到它看到“found”,然后将该行中的所有内容读取到一个数组中 text text some words text text hello text text text text random text world found read1 read2 read3 don't read any of this 到目前为止,我有以下几点: 我怎么能一直读到那一行的结尾?谢谢fgets函数将一直读取到行或文件的末尾-以先到者为准!它将从您当前的
text text some words text
text hello text text
text text random text
world
found read1 read2 read3
don't
read any of this
到目前为止,我有以下几点:
我怎么能一直读到那一行的结尾?谢谢fgets函数将一直读取到行或文件的末尾-以先到者为准!它将从您当前的文件读取点读取 ,摘录如下:
char line[LINE_MAX];
while (fgets(line, LINE_MAX, file) != NULL) {
..
}
编辑:然后在行上使用字符串操作提取所需内容。或者两者都可以作为起点。我也很喜欢 1
fgets (name, 50, stdin);
50
是缓冲区的最大长度
二,
[]
是扫描集字符[^\n]
告诉我们,虽然输入不是换行符,但“\n”接受输入。然后使用%*c
从输入缓冲区读取换行符(未读取),而*
表示此读入输入被丢弃(赋值抑制),因为您不需要它。A可能会派上用场。特别是这一部分,以及它的内容。我相信你很快就会找到合适的东西。if(strcmp(var,found)){
-->if(strcmp(var,found))==0{
@BLUEPIXY啊,是的,很抱歉,谢谢!嗨,noelicus。但是如何将每个字符“read1”“read2”“read3”作为单独的元素存储在一个字符中**?新手这很好地回答了帖子的问题“如何阅读整行文字?”和“我如何阅读到这行文字的结尾?”。现在开始一个新问题。新问题(超出原始文章)属于另一篇文章。如果“如何存储每个字符‘read1’‘read2’‘read3’”很重要,它应该在原始文章中。scanf(%[^\n]]*c,name);
如果行仅“\n”
或太长,则无法正常工作。请使用fgets()
。
fgets (name, 50, stdin);
scanf ("%[^\n]%*c", name);