从文件中读取几个字符串

时间:2014-02-23 14:21:16

标签: c scanf

想象一下,我有这个.txt文件:

HEY
What's your name
My name is xx

如何在我的C程序中将每行扫描成不同的字符串?

因为如果我做了

fscanf(myfile, "%s", string)

我只能逐字扫描,不会识别出不同的行......

我能做到的任何好方法吗?

2 个答案:

答案 0 :(得分:1)

e.g

#include <stdio.h>

int main(){
    char string[128];
    FILE *myfile = fopen("data.txt", "r");
    while(1==fscanf(myfile, " %127[^\n]", string)){
        printf("%s\n", string);
    }
    fclose(myfile);
    return 0;
}

答案 1 :(得分:0)

您可以使用fgets从文件中连续读取行。但是,您必须事先知道线可以具有的最大长度。

#define MAX_LEN 100

FILE *fp = fopen("myfile.txt", "r");
char line[MAX_LEN];

while(fgets(line, MAX_LEN, fp) != NULL) {
    // process line
}

fclose(fp);

此处,fgets(line, MAX_LINE, fp)表示fgets将从流MAX_LINE - 1中读取最多fp个字节,并将它们存储在line指向的缓冲区中。为fgets最后附加的空字节保留一个字节。如果读取了存储在缓冲区fgets中的换行符,line将返回。因此,如果您要从line中删除换行符,则应在上面的while循环中执行以下操作。

line[strlen(line) - 1] = '\0';  // overwrite newline character with null byte