想象一下,我有这个.txt文件:
HEY
What's your name
My name is xx
如何在我的C程序中将每行扫描成不同的字符串?
因为如果我做了
fscanf(myfile, "%s", string)
我只能逐字扫描,不会识别出不同的行......
我能做到的任何好方法吗?
答案 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