似乎无法让 fgetc 在第二次读取文件时工作

标签 c fgetc

我正在重新打开并读取文件 SORTED.txt,在第一次使用后将其关闭 - 复制另一个文件 UNSORTED.txt 的所有内容。 从 UNSORTED.txt 复制后,我想计算我复制的行数(作为一个单独的过程,而不是在复制过程中)。似乎 fegtc() 第二次没有指向文件 (SORTED.txt) 的开头,因此 lines 的值保持为它被初始化的值,0。另外,一般来说,我可以重新指向fgetc() 在没有关闭并重新打开所考虑的文件的情况下完成?

感谢任何帮助。

干杯!

  f = fopen("./TEXTFILES/UNSORTED.txt", "w");
  if (f == NULL){
      printf("ERROR opening file\n");
      return 100;
  }

  for (i=0; i<1000000; i++){
    fprintf(f, "%d\n", (23*rand()-rand()/13));
  }
  fclose(f);

  f = fopen("./TEXTFILES/UNSORTED.txt", "r");
  if (f == NULL){
    return 100;
  }
  s = fopen("./TEXTFILES/SORTED.txt", "w");
  if (s == NULL){
    return 101;
  }

  while(1){
    j = getc(f);
    if (j == EOF) break;
    fputc(j, s);
  }
  fclose(f);
  //Closed source file. Read number of lines in target file.
  fclose(s);
  s = fopen("./TEXTFILES/SORTED.txt", "w");
  j = 0;

  while(1){
    j = fgetc(s);
    if (j == EOF) break;
    if (j == '\n') lines++;
  }

  fclose(s);
  printf("\n%d\n", lines);

最佳答案

您正在以 "w"(写入)模式打开文件:

s = fopen("./TEXTFILES/SORTED.txt", "w");

但从中读取:

    j = fgetc(s);

您可能打算以阅读模式打开它:

s = fopen("./TEXTFILES/SORTED.txt", "r");
                                    ^^^

关于似乎无法让 fgetc 在第二次读取文件时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11651196/

相关文章:

c - OpenCL 中的图像和过滤器

c - 这是如何工作的 :while (scanf ("%d %d", &a, &b), (a || b))

c - 如何用C软件中断正在运行的函数?

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

关于 fgetc 使用的说明

使用 fgets 而不是 fgetc 复制文件?

c - 使用 fgetc 时是否可能将 EOF 与正常字节值混淆?

c - 寻找公素因数

c - 我在使用 fgetc() 时遇到段错误。我该如何修复它?

C:编辑文件以删除空字符: