好的,所以我不确定这里发生了什么。我有一个简单的函数 int foo(char *filename) ,它接受 filename 并计算文件中的单词数。

int foo(char *filename){

  FILE *inFile;
  int wordCount = 0;

  printf("foo\n"); // test printf() statement (currently prints)

  char word[50];
  inFile = (&filename, "r");

  printf("infile\n");  // test printf() statement (currently prints)

  while (1){
    printf("while");   // test printf() statement (doesn't print)
    fscanf(inFile, "%s", word);
    if (feof(inFile))
        break;
    printf("%d", wordCount); //test printf() statement
    wordCount++;
  }
  fclose(inFile);
  return wordCount;

}

如您所见,我打印了“infile”,而不是“while”。我收到段错误。有谁知道为什么这不起作用另外,我的 inFile = (&filename, "r"); 语句是否正确?我不太擅长指针。

最佳答案

我很惊讶这一行实际上编译:

inFile = (&filename, "r");

如果您尝试打开文件:
inFile = fopen(filename, "r");

编辑:

如前所述,您需要使用 printf 结束 \n 或调用 fflush(stdout) 否则它将被缓冲而不打印。

关于c - C中的奇怪段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7577311/

10-13 05:55