所以我正在编写一个读取恶意文件的程序,它应该将其打印到输出文件中。但是,我遇到的问题之一是,对于我的第一个while循环,当我将每行的地址从文件存储到lineRef [i]时,在while循环中,如果我立即将其打印出来,它将打印正确的行。但是,在第二个while循环中,它只打印文件的最后一行。
FILE * inputFile = fopen("example.mal", "r");
FILE * outputFile = fopen("output.lst", "w");
char linesFromFile[256];
char * lineRef[50];
char * labels[50];
int i = 0;
while(fgets(linesFromFile, 256, inputFile) != NULL)
{
lineRef[i] = linesFromFile;
i++;
}
i = 0;
while(lineRef[i] != NULL)
{
printf("%s\n", lineRef[i]);
i++;
}
return 0;
答案 0 :(得分:0)
lineRef[i] = linesFromFile;
在此,您要为linesFromFile
的所有元素分配lineRef
的相同地址
您需要为读入lineRef
的每个元素的每一行分配内存,然后将linesFromFile的内容复制到其中。
e.g
while(fgets(linesFromFile, 256, inputFile) != NULL)
{
lineRef[i] = malloc(256);
memset(lineRef[i],'\0',256);
strncpy(lineRef[i] , linesFromFile,256);
i++;
}