C语言从fille到char数组读取

时间:2016-11-04 19:03:58

标签: c file char fgetc

所以我试图逐个字符地从文件中读取数组。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE * fp;
   char abc[255];
   int i = 0;

   fp = fopen ("source.c", "r");

   while(fgetc(fp) != EOF)
   {
       fputc(abc[i], FILE *fp );
       printf("%c", abc[i]);
       i++;

   }

   fclose(fp);



   return(0);
}

我收到了一个错误:

main.c: In function 'main':
main.c:19:19: error: expected expression before 'FILE'
     fputc(abc[i], FILE *fp );

这个错误是什么意思?有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:2)

错误与fputc()的错误使用有关。第二个参数是。 但在您的情况下,您不需要拨打fputc(),因为您也使用了printf()。

你还有另外一个问题。你根本不存储从文件中读取的字符。做类似的事情:

   int in;

   while((in=fgetc(fp)) != EOF)
   {
       in = abc[i];
       printf("%c", abc[i]);
       i++;
   }

一些一般性意见:

  • 始终对所有标准功能进行错误检查。如果fopen()失败怎么办?
  • 您的阵列最多只能容纳256个字符。如果文件source.c有更多字符怎么办?

答案 1 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

int main()
{
  FILE * fp;
  char abc[255];
  int i = 0;

  fp = fopen ("source.c", "r");

  // we need to make sure that we can fit
  // into buffer - that's why we check whether i < 255
  while(i<255 && (abc[i] = fgetc(fp)) != EOF)
  {
    printf("%c", abc[i]);
    i++;
  }
  // if we are way before end of the buffer
  // we should think about terminating string
  if(i<254)
    abc[i] = '\0';
  else
    // otherwise, we have to make sure that last character
    // in buffer is zero
    abc[254] = '\0';
  printf("%s", abc);

  fclose(fp);

  return(0);
}