c - 使用 fget 和 put 读取和打印文件不起作用



我写了这篇文章,如果下面的代码来读取一个文本文件,上面写着:那是最好的时代,那是最糟糕的时代,那是智慧的时代。

当我运行我的代码时,似乎什么都没有发生。您可以在我的代码中发现可能导致此问题的任何内容吗?(解决方案构建时也没有错误或警告(。谢谢:)

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE * fPointer;
fPointer = fopen("exercise1.txt","r");
char singleline[150];
while (!feof(fPointer))
{
    fgets(singleline, 150, fPointer);
    puts(singleline);
}
fclose(fPointer);
return 0;
}

如果我修改您的程序以考虑风向标的备注,并且我用 fput 替换您的 put 以免将 加倍(fgets 不要删除 并添加 ( :

#include<stdio.h>
#include<stdlib.h>
int main()
{
  FILE * fPointer = fopen("exercise1.txt","r");
  if (fPointer == NULL)
    puts("cannot open exercise1.txt");
  else {
    char singleline[150];
    while (fgets(singleline, sizeof(singleline), fPointer))
      fputs(singleline, stdout);
    fclose(fPointer);
  }
  return 0;
}

编译和执行:

/tmp % gcc -pedantic -Wextra c.c
/tmp % cp c.c exercise1.txt
/tmp % ./a.out
#include<stdio.h>
#include<stdlib.h>
int main()
{
  FILE * fPointer = fopen("exercise1.txt","r");
  if (fPointer == NULL)
    puts("cannot open exercise1.txt");
  else {
    char singleline[150];
    while (fgets(singleline, sizeof(singleline), fPointer))
      fputs(singleline, stdout);
    fclose(fPointer);
  }
  return 0;
}
/tmp % rm exercise1.txt 
/tmp % ./a.out
cannot open exercise1.txt
int i=0;
FILE *file;
file = fopen("code.txt","r"); //lecture d 'un fichier
char codesource[500] = {0};
if (file == NULL) {
  printf("Erreur d'ouverture");
  return 0;
} 
else {
  while((codesource [i] = getc(file))!= EOF) {
    //printf("%c", codesource [i]);
    i++;
  }
}

最新更新