gpt4 book ai didi

c - 使用 fgets() rewind(File * file) 读取行不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:10 26 4
gpt4 key购买 nike

char *readLine(int n, char * filename) 
{
FILE * file=fopen(filename,"r");
int i=0;
int BUF=255;
char temp[BUF];
char puffer[BUF];
char* returned_string;
for(i = 0; i < n-1; i++)
if(fgets(temp, BUF, file) == NULL)
return NULL;

if(fgets(puffer,BUF,file) == NULL)
return NULL;

returned_string = malloc (strlen (puffer) + 1);
strcpy (returned_string, puffer);
rewind(file);
fclose(file);
return returned_string;
}

调用之前的代码:

char * temp=readLine(0,filename);
char * temp2=readLine(1,filename);
char * temp3=readLine(2,filename);

使所有三个变量相同,尽管我试图读取具有不同内容的不同行..

我还尝试使用 rewind(File * file) ,它应该与 fseek(file,0,SEEK_SET) 相同

如何阅读我想阅读的行?

提前致谢!

最佳答案

更新

试试这段代码,它转到第 n 行并返回它(我相信这就是你想要做的)fseek 转到前面的行,fgets 获取后面的行(意思是目标行):

char *readLine(int n, char * filename) 
{
FILE * file=fopen(filename,"r");
int i=0;
int BUF=255;
char puffer[BUF];
char* returned_string;
fseek(file , n-1 ,SEEK_SET);
if(fgets(puffer,BUF,file) == NULL)
return NULL;
returned_string = malloc(sizeof(puff));
strcpy (returned_string, puffer);
fclose(file);
return returned_string;
}

在 malloc 中使用 malloc(sizeof(puff)) 或 malloc(BUFF) 因为当你使用 malloc(strlen(puff) + 1) 时速度要快得多编译器每次都必须计算 strlen(puff)

关于c - 使用 fgets() rewind(File * file) 读取行不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com