0

次のコードがあります。

void main()
{
  // Ask user for input file name
  char file_name[100]; 
  printf("File Name?: \n");
  fgets(file_name, 100, stdin);
  printf("Your input: %s", file_name);  
  processFile(file_name);
}

読み取る必要がある入力ファイルの値を取得するために使用されます。次に、processFile 関数で次のことを行います。

void processFile(char *file_name)
{
    FILE *in = fopen(file_name,"r");
}

しかし、セグメンテーション エラー (コア ダンプ) が発生しています。理由がわかりません。

ありがとう

4

1 に答える 1

-1

改行文字は fgets の読み取りを停止させますが、関数によって有効な文字と見なされ、str にコピーされる文字列に含まれます。

http://www.cplusplus.com/reference/cstdio/fgets/

試してみてください

 scanf("%s", file_name);
于 2013-02-23T21:56:37.647 に答える