如何读取从文件中读取的特定行

时间:2012-04-26 06:45:03

标签: c

我已经设法将我文件中的所有行读取到char数组但是当我想要读取特定行(即下面的示例中的第254行)时,我总是在我的文件的最后一行中获取数据。知道问题是什么。谢谢。 以下是代码示例:

 while (fgets(line,2000,fp)!=NULL
{
 readData [n] = line;
 n++;
}
printf ("print line after %s\n",readData [254]);

3 个答案:

答案 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)

您可以使用搜索指针将光标移动到第行。然后应用阅读线。 希望它能奏效。