Char数组指针存储每个下标文件的最后一行

时间:2017-11-07 03:41:11

标签: c

所以我正在编写一个读取恶意文件的程序,它应该将其打印到输出文件中。但是,我遇到的问题之一是,对于我的第一个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;

1 个答案:

答案 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++;
}