我已经设法将我文件中的所有行读取到char数组但是当我想要读取特定行(即下面的示例中的第254行)时,我总是在我的文件的最后一行中获取数据。知道问题是什么。谢谢。 以下是代码示例:
while (fgets(line,2000,fp)!=NULL
{
readData [n] = line;
n++;
}
printf ("print line after %s\n",readData [254]);
答案 0 :(得分:2)
你每次都在复制指针。所以最后readData
数组的每个条目都指向相同的内存。尝试复制数据:
readData[n] = strdup(line);
记得free
完成后。如果您没有strdup
或不想使用它:
readData[n] = malloc(strlen(line) + 1);
strcpy(readData[n], line);
答案 1 :(得分:1)
我猜“readData”是一个char *的数组,所以当你说readData[n] = line
时,你总是将数组设置为相同的数据“缓冲区”。
你需要更多像
的东西char buffer[numLines][colsPerLine];
char line[colsPerLine];
while (fgets(line,2000,fp)!=NULL
{
strcpy(buffer[n], line); // copy contents of line into the buffer
n++;
}
printf ("print line after %s\n",buffer[254]);
答案 2 :(得分:-1)
您可以使用搜索指针将光标移动到第行。然后应用阅读线。 希望它能奏效。