gpt4 book ai didi

c - 从文件读取最后 n 个字节时出现段错误

转载 作者:行者123 更新时间:2023-11-30 20:34:18 25 4
gpt4 key购买 nike

我正在尝试打印文件中的最后 n 个字节。这是我的代码。我遇到了段错误。请有人告诉这是什么错误?以下是代码-

#include <stdio.h>
#include <ctype.h>
void fileprint(int line,char s[]); //to print last n lines
int atof(char s[]);
int main(int argc, char * argv[]) // tail filename 10
{
if(argc == 1)
printf("usage: tail");
if(argc == 2)
fileprint(10, argv[1]);
if(argc == 3)
fileprint(atof(argv[2]), argv[1]);
if(argc > 3)
printf("usage: tail ");
}

void fileprint(int line, char s[])
{
int c;
FILE * p = fopen(s, "r"); // pointer to file
fseek(p, -line, SEEK_END);
while((c = fgetc(p)) != EOF) {
putchar(c);
}
}

int atof(char s[]) //convert string int
{
int i,n;
for(n = 0;isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return n;
}

最佳答案

在你的函数中:atof(),

变量i未初始化。

它包含其所在位置堆栈上的所有垃圾。

这个表达式:isdigit(s[i])正在访问内存中的某个随机位置。

这是未定义的行为,可能/将会导致段错误事件。

关于c - 从文件读取最后 n 个字节时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42884348/

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