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行を読み取る機能を実現することができる.
 
  • #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;
  • }