C txtファイルを行ごとに読み込む
1399 ワード
原文住所:https://blog.csdn.net/u011857683/article/details/81263619
cにはgetline()という関数はなく,この関数はc++にのみ存在する.
getsを使うと言う人もいますが、この関数は安全ではありません.getsは文字列の大きさを知らないので、オーバーフローの問題を起こしやすいです.
ソリューション、fgets関数の使用
その鍵は、n-1文字を読み出す前に、改行やEOFに遭遇した場合、文字列終了フラグ'0'を挿入し、読み出し終了することである.n-1まで読んで改行やEOFに遭遇していない場合は、文字列終了フラグ'0'も挿入され、読み出しが終了します.したがって、適切なサイズのバッファを設定することで、1行を読み取る機能を実現することができる.
cにはgetline()という関数はなく,この関数はc++にのみ存在する.
getsを使うと言う人もいますが、この関数は安全ではありません.getsは文字列の大きさを知らないので、オーバーフローの問題を起こしやすいです.
ソリューション、fgets関数の使用
その鍵は、n-1文字を読み出す前に、改行やEOFに遭遇した場合、文字列終了フラグ'0'を挿入し、読み出し終了することである.n-1まで読んで改行やEOFに遭遇していない場合は、文字列終了フラグ'0'も挿入され、読み出しが終了します.したがって、適切なサイズのバッファを設定することで、1行を読み取る機能を実現することができる.
#include "stdio.h"
int main(int argc,char** argv)
{
FILE *fp;
char load_file[256];
char line[1024];//txt 1024
scanf("%s",load_file);
fp=fopen(load_file,"r");
if(fp==NULL)
{
printf("can not load file!");
return 1;
}
while(!feof(fp))
{
fgets(line,1024,fp);//txt 1024
}
printf("%s",line);
fclose(fp);
return 0;
}