想象我有这样的.txt文件:几个字符串
HEY
What's your name
My name is xx
我如何才能让,在我的C程序,以SCANF每一行成不同的字符串?
因为如果我做
fscanf(myfile, "%s", string)
我可以用一句话只扫描字,和不同的线将不被认可......
什么好办法,我可以做到这一点?
想象我有这样的.txt文件:几个字符串
HEY
What's your name
My name is xx
我如何才能让,在我的C程序,以SCANF每一行成不同的字符串?
因为如果我做
fscanf(myfile, "%s", string)
我可以用一句话只扫描字,和不同的线将不被认可......
什么好办法,我可以做到这一点?
您可以使用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
将从流fp
读至多MAX_LINE - 1
字节并将其存储在缓冲器中由line
指向。一个字节是为空字节保留的,最后附加fgets
。 fgets
将返回,如果一个新行被读取,并存储到缓冲区line
。因此,如果要从line
中删除换行符,则应在上述while
循环中执行以下操作。
line[strlen(line) - 1] = '\0'; // overwrite newline character with null byte
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;
}