gpt4 book ai didi

c - 如何使用c代码查找文件的尾部

转载 作者:行者123 更新时间:2023-11-30 15:13:07 24 4
gpt4 key购买 nike

我编写了代码来查找尾部,但是,它有一个异常(exception),当我尝试将整行打印为尾部时,它不会打印起始字符。例如如果我的文件有14行,并且我输入的n值也是14,那么它不会打印起始字符。

请帮助修改我的代码:

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
FILE *in, *out;
int count = 0,lines;
long int pos;
char s[100];
char ch,c;
if(argc<2)
{
printf("Arguments which is to be passed should be 2");
}
else if(argc>2)
{
printf("too many argumnets are passed");
}
in = fopen("anj.txt", "r");
out = fopen("output.txt", "w");
if(in==NULL || out==NULL)
{
printf("unable to open");
exit(0);
}
else
{
int n=atoi(argv[1]);
if(n>=1)
{
fseek(in, 0, SEEK_END);
pos = ftell(in);
while (pos)
{
fseek(in, --pos, SEEK_SET);
if (fgetc(in) == '\n')
{
//count=count+1;
if (count++==n)
break;
}
}
if(count<n)
{
printf("no. of lines in file %d is less than enterd",count);
}
c = fgetc(in);
while (c != EOF)
{
fputc(c, out);
c = fgetc(in);
}
}
else
printf("renter the value of n");
}
fclose(in);
fclose(out);
return 0;
}

最佳答案

如果行数与输入的值相同,您的代码将读取文件中的第一个字符,由 fgetc 消耗它,并由于 pos == 0 而结束循环!

在这个极端情况的 while 循环之后添加此检查:

if (pos == 0)
{
fseek(in, 0, SEEK_SET);
}

关于c - 如何使用c代码查找文件的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828564/

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