如何从文件中读取特定的行
我已经设法将我的文件中的所有行读取到char数组,但是当我想要读取特定的行(即下面的示例中的行254)时,我总是将数据读入我的文件中的最后一行。任何想法是什么问题。谢谢。 下面是代码样本:如何从文件中读取特定的行
while (fgets(line,2000,fp)!=NULL
{
readData [n] = line;
n++;
}
printf ("print line after %s\n",readData [254]);
我猜“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]);
一点你可以使用查找指针移动光标到行没有。然后应用阅读线。 希望它能起作用。
您每次都在复制指针。所以最后,readData
阵列的每个条目都将指向相同的内存。尝试复制数据代替:
readData[n] = strdup(line);
并记住要完成时free
。如果你没有strdup
或不想使用它:
readData[n] = malloc(strlen(line) + 1);
strcpy(readData[n], line);
嗨Cnicutar,我在哪里使用免费(readData [n])请。就在我关闭文件之前?或whithin循环。谢谢 – user999 2012-04-26 08:24:38
@ user999当你决定“我不再有'readData [n]'' – cnicutar 2012-04-26 08:25:37
这个伟大的,再次感谢你,我打电话'免费'我还有一个问题,如果没关系。从readData [254]行有4个参数是这样的:1.56 2.47 5.69 3.48。我需要单独访问每个这些参数,即数组[0]应该返回1.56作为浮点数,非常感谢您的建议。 – user999 2012-04-26 08:48:22
完美,非常感谢你cnicutar和约翰3136你的整洁的建议。 – user999 2012-04-26 08:02:36
在'char buffer'和'char line'的定义中使用了哪些理智/最优化的默认值/值? 'numLines'和'colsPerLine'来自哪里? – 2014-04-13 01:57:36