我已经设法将文件中的所有行读取到一个 char 数组中,但是当我想读取特定行时,即第 254 行,如下例所示,我总是在文件的最后一行中获取数据。知道有什么问题。谢谢你。这是代码示例:
while (fgets(line,2000,fp)!=NULL
{
readData [n] = line;
n++;
}
printf ("print line after %s\n",readData [254]);
我已经设法将文件中的所有行读取到一个 char 数组中,但是当我想读取特定行时,即第 254 行,如下例所示,我总是在文件的最后一行中获取数据。知道有什么问题。谢谢你。这是代码示例:
while (fgets(line,2000,fp)!=NULL
{
readData [n] = line;
n++;
}
printf ("print line after %s\n",readData [254]);
您每次都在复制指针。所以最后readData
数组的每个条目都将指向同一个内存。尝试复制数据:
readData[n] = strdup(line);
并记住free
何时完成。如果您没有strdup
或不想使用它:
readData[n] = malloc(strlen(line) + 1);
strcpy(readData[n], line);
我猜“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]);
您可以使用搜索指针将光标移动到第 no 行。然后应用阅读线。希望它会奏效。