我知道这个问题已经被问了几次,但从来没有以一种帮助我解决问题的方式。本质上,我正在读取四个文本文件,所有单词都用新行分隔,并希望将它们存储在一个char数组中。我首先计算文件中的行数,然后创建一个新的char数组,但是我无论如何都无法弄清楚如何正确地读取它。最后两行只是为了测试它是否正确读取整个文件,它们总是返回NULL和问号符号。
我希望每一行都在char数组的下一个索引处。
任何帮助都将非常棒!提前感谢您。
我希望每一行都在char数组的下一个索引处。
任何帮助都将非常棒!提前感谢您。
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
void countAnagrams(char* fileName);
void main ()
{
char *fileNames[] = {"AnagramA.txt","AnagramB.txt","AnagramC.txt","AnagramD.txt"};
countAnagrams(fileNames[0]);
countAnagrams(fileNames[1]);
countAnagrams(fileNames[2]);
countAnagrams(fileNames[3]);
}
void countAnagrams(char* fileName)
{
int anagramCount = 0;
int ch, lines = 0;
//Count number of lines in file
FILE *myfile = fopen(fileName, "r");
do
{
ch = fgetc(myfile);
if(ch == '\n')
lines++;
}while(ch != EOF);
char contents[lines];
int i = 0;
for(i=1;i<lines;i++)
{
fscanf(myfile,"%s",contents[i]);
}
fclose(myfile);
printf("%.12s\n",fileName);
printf("number of lines: %d\n", lines);
printf("first thing: %s\n", contents[0]);
printf("last thing: %s\n", contents[lines-1]);
}
void main()
是无效的。 - too honest for this sitelines ++;
会发生三次? - chux - Reinstate Monicachar contents[lines];
是一个char
数组。你的代码中有太多错误了。 - too honest for this siterewind
函数将文件指针重置到文件开头。 - kaylumrewind()
后,你可能需要使用for(i=0;i<lines;i++)
或者for(i=0;i<=lines;i++)
。 - chux - Reinstate Monica