如何在C中的文本文件中创建char [] []?

时间:2012-05-20 09:58:11

标签: c arrays fopen text-files

我对C很新,我在C中遇到了一个问题: 我想写一个程序,它读取一个txt文件并将内容写为char[50][50]

要读取我使用fopen的文件,但我不知道如何将其写入数组。解决这个问题的好方法是什么?

3 个答案:

答案 0 :(得分:2)

如果只读取特定大小的文件,则易于使用 E.g。

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

int main() {
    FILE *fp;
    char data[50][50];
    int count;

    if(NULL==(fp=fopen("data.txt","r"))){
        perror("file not open\n");
        exit(EXIT_FAILURE);
    }
    count=fread(&data[0][0], sizeof(char), 50*50, fp);
    fclose(fp);

    {   //input check
        int i;
        char *p = &data[0][0];
        for(i=0;i<count;++i)
            putchar(*p++);
    }
    return 0;
}

答案 1 :(得分:1)

编辑:@ BLUEPIXY的答案明显优于这种方法。

@ Hidde的代码适用于这个具体的例子:

// Include the standard input / output files.
// We'll need these for opening our file
#include <stdio.h>


int main ()
{
    // A pointer to point to the memory containing the file data:
    FILE * pFile;

    // Open the file itself:
    pFile=fopen ("250.txt","r");
    // Check that we opened the file successfully:
    if (pFile==NULL)
    {
        perror ("Error opening file");
    }
    else
    {
        // The file is open so we can read its contents.
        // Lets just assume its got 50*50=250 chars in.

        // Initialise an array to hold our results:
        char array[50][50];
        int row, col;
        for (row = 0; row < 50; row++)
        {
            for (col = 0; col < 50; col++)
            {
                // Store the next char from our file in our array:
                array[row][col] = fgetc (pFile);
            }
        }

        // Close the file
        fclose (pFile);

        // Demonstrate that we've succeeded:
        for (row = 0; row < 50; row++)
        {
            for (col = 0; col < 50; col++)
            {
                printf("%c", array[row][col]);
            }
            printf("\n");
        }
    }
    // Return 0 indictaes success
    return 0;
}

确实应该有一些代码来检查输入文件是否符合您的期望,否则可能会发生奇怪的事情。

答案 2 :(得分:0)

/* fgetc example: money counter */
#include <stdio.h>
int main ()
{
  FILE * pFile;
  int c;
  int n = 0;
  pFile=fopen ("myfile.txt","r");
  if (pFile==NULL) perror ("Error opening file");
  else
  {
    do {
      c = fgetc (pFile);
      if (c == '$') n++;
    } while (c != EOF);
    fclose (pFile);
    printf ("The file contains %d dollar sign characters ($).\n",n);
  }
  return 0;
}

CPlusPlus.com复制。您可以使用fgetc(FILE* )阅读该文件。你创建一个while循环,在其中测试读取的最后一个字符是否不是文件的结尾。我希望你能用这段代码填充你的数组。