• 締切済み

ファイルから一文字ずつ読み込む

ファイルを読み込むfgetc()関数のところでプログラムが停止します。 以下が実行したプログラムです。 #include<stdio.h> void get_name(char name[],int a){ printf("ファイル名を入力してください。\n"); scanf("%s",name); } void open(FILE *fp2,char name[]){ if((fp2=fopen(name,"r"))==NULL){ printf("ファイルオープンエラー"); } } int count(FILE *fp3){ int ch=0; int count=0; if(fp3==NULL){ printf("error"); } while((ch=fgetc(fp3))!=EOF){ if(ch=='\n'){ count++; } } printf("TEST"); fclose(fp3); return(count); } int main (void){ FILE *fp; char fname[30]; get_name(fname,30); open(fp,fname); printf("%d",count(fp)); return(0);} ファイル名を入力してください。ファイル名を入力、プログラム停止です。 '\n'を数えれるようにしてください。御指摘お願いします。

みんなの回答

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 open関数内でfopenしたポインタがmainのfpに渡されていないのだと思います。 open関数をやめてmain内でfp = fopenするようにするか、 open関数の引数をポインタのポインタにしてあげる必要があります。 ■ポインタのポインタにする場合 ・open関数 void open(FILE **fp2,char name[]){ if((*fp2=fopen(name,"r"))==NULL){ printf("ファイルオープンエラー"); } } ・main関数 open(&fp,fname);

参考URL:
http://wisdom.sakura.ne.jp/programming/c/c25.html
situmonn9876
質問者

お礼

お返事とプログラムありがとうございます。

関連するQ&A