0

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

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

3 回答 3

2

您每次都在复制指针。所以最后readData数组的每个条目都将指向同一个内存。尝试复制数据:

readData[n] = strdup(line);

并记住free何时完成。如果您没有strdup或不想使用它:

readData[n] = malloc(strlen(line) + 1);
strcpy(readData[n], line);
于 2012-04-26T06:47:38.250 回答
1

我猜“readData”是一个 char*s 数组,所以当你说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]);
于 2012-04-26T06:47:21.743 回答
-1

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

于 2012-04-26T06:47:33.073 回答