gpt4 book ai didi

c - getc() 中的段错误

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

我正在用 C 开发一个链表。我正在从一个 txt 文件中获取数据。但是当我尝试运行该程序时,它给我一个 getc() 的段错误这是代码,

#include<stdio.h>
#include<stdlib.h>
struct node{
char surname[100];
int number[1o0];
char name[100];
struct node *next;
};
typedef struct node Node;

int main()
{
FILE *ifp;
Node first ,*current;
//current =&first;
int i=0,j=0;
int ch;
char num[100],name[100];

ifp = fopen("tele.txt","r");

while (ch != EOF)
{
while(i<4)
{
ch = getc(ifp);
num[i++] = ch;
}
num[i] = '\0';
i=0;
while(ch !='\n')
{
ch = getc(ifp);
if(ch != '\t')
name[j++]=ch;
}
name[j] = '\0';
//ch = '\0';

printf("Number %s\nName %s\n ",num,name);
j=0;

}

fclose(ifp);
}

我在尝试运行程序时遇到的错误是,

程序收到信号 SIGSEGV,段错误。getc () 中的 0x0000003c0ee68dfa 来自/lib64/libc.so.6

请在这方面指导我。提前致谢。


最佳答案

最有可能的原因是它无法打开文件。

在调用 fopen("tele.txt","r") 后立即检查 ifp 是否为 NULL。如果它是 NULL,errno 会给你更多关于错误的细节(很多可能的原因,其中一些是:文件不存在,你没有权限访问它,或者你在错误的目录中。)

ch 本身也存在一些问题,可能与崩溃无关:

  • ch 未初始化,因此可能会或可能不会输入 while (ch != EOF) [感谢@Dirk 指出这一点];<
  • while(ch !='\n') 有点狡猾,因为如果您遇到 EOF,您将陷入无限循环。

关于c - getc() 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361709/

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