从TXT文件中读取所有字符



我正试图写一个程序,读取所有TXT文件和复制到一个特定的数组。但是,问题是空白字符。如果我使用fscanf,我不能把所有的TXT文件放到一个数组中。如何将TXT文件复制到char数组中?

标准库提供了在一次函数调用中读取文件全部内容所需的所有函数。你必须首先计算出文件的大小,确保分配了足够的内存来保存文件的内容,然后在一个函数调用中读取所有内容。

#include <stdio.h>
#include <stdlib.h>
long getFileSize(FILE* fp)
{
   long size = 0;
   fpos_t pos;
   fseek(fp, 0, SEEK_END);
   size = ftell(fp);
   fseek(fp, 0, SEEK_SET);
   return size;
}
int main(int argc, char** argv)
{
   long fileSize;
   char* fileContents;
   if ( argc > 1 )
   {
      char* file = argv[1];
      FILE* fp = fopen(file, "r");
      if ( fp != NULL )
      {
         /* Determine the size of the file */
         fileSize = getFileSize(fp);
         /* Allocate memory for the contents */
         fileContents = malloc(fileSize+1);
         /* Read the contents */
         fread(fileContents, 1, fileSize, fp);
         /* fread does not automatically add a terminating NULL character.
            You must add it yourself. */
         fileContents[fileSize] = '';
         /* Do something useful with the contents of the file */
         printf("The contents of the file...n%s", fileContents);
         /* Release allocated memory */
         free(fileContents);
         fclose(fp);
      }
   }
}

您可以使用fread(3)从流中读取所有内容,如下所示:

char buf[1024];
while (fread(buf, 1, sizeof(buf), stream) > 0) {
    /* put contents of buf to your array */
}

您可以使用函数fgetc(<file pointer>)返回从文件中读取的单个字符,如果您使用此函数,您应该检查读取的字符是否为EOF

相关内容

  • 没有找到相关文章

最新更新