将文本文件读入数组

我对编程很陌生,在为一个夏季项目做了一周的努力之后,我真的很感激一些帮助!

我正在尝试读取一个长文本文件,它只是一个长字符串(NB:不是一个实际的编程字符串)的字母,然后将每个字母放入网格中的位置(该程序的目标最终是解决一个wordsearch)到目前为止,我已经提出了下面的程序,它似乎没有生成一个网格,而只是重新打印文本文件,前面有以下内容:

{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf510 {\fonttbl\f0\fmodern\fcharset0 Courier;} {\colortbl;\red255\green255\blue255;} \paperw11905\paperh16837\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \deftab720 \pard\pardeftab720 \f0\fs24 \cf0 

我写的程序是这样的:

 #include  #include  #include  #include  #include  int main() { int i,j; char myarray[26][26],x; FILE *myfile; for (j=0; j<26; j++) //initialise array elements all to zero { for (i=0; i<26; i++) { myarray[i][j]=0; } } myfile=fopen("*redacted*","r"); if (myfile!=NULL) //check file actually opened { for (i=0; i<26; i++) { for(j=0; j<26; j++) { fscanf(myfile,"%c",&x); //read the values in myarray[i][j]=x; } } // data is now in the array called myarray fclose(myfile); } else { printf("File not found"); } for(i=0;i<26;i++) { for(j=0;j<26;j++) { printf("%c",myarray[i][j]); } } } 

感谢您提供的任何帮助

这是C的美丽:

您可以通过一次操作读取文件,并自行保存循环:

就像是

 fread(myArray, sizeof(myArray), myfile) 

在执行此操作之前,您可能应该将数组初始化为全零,但是:

 char myArray[26][26] = { 0 }; 

如果你没有初始化,请用零填充:

  memset(myArray, 0, sizeof(myArray)); 

此外,您可能希望在打印部分的每个外部循环的末尾打印换行符(“\ n”):否则文件内容将显示为一个长的连续字符串。

我不打算做你的夏季项目,但这里有一些评论:

1)文本文件不是文本文件,而是RTF文件,它是带格式的文本。 您可能使用TextEdit创建/保存它。 如果是这样,请使用“制作纯文本”菜单项来解决此问题。

2)您的程序似乎在执行以下操作:从文件中读取26×26(为什么26?)字符(包括空格,换行符等),将它们放在26×26数组中,然后逐个打印它们。 我不清楚你想要实现什么,但它似乎与格式化数组有关,在这种情况下你可能想要考虑如何处理输入中的空白字符,并自己打印它们产生输出。