我正在编写一个C程序,它读取一个充满字符的文本文件。它读取文本文件并将每个char放入char数组中。 (我稍后将使用顶点/边缘指针来完成其他任务)。在程序的这个阶段,我只是试图从文本文件中打印char字符数组,但我得到了“分段错误”
要注意,此程序使用jGrasp运行,但在PICO中使用相同的代码时出现此错误。
发生错误的时候:
typedef struct edgetag{ //edge structure
vertex* v;
struct edgetag* q;
}edgetag;
if(counter == 2){ //if counter == 2, make an edge
int l = 0;
while(l < 100){
if(vertices[l].c == text[j]){ //find what vertex needs the edge
(*theVertex) = vertices[l];
l = 100;
}
l++;
}
edgetag* e = (edgetag*)malloc(sizeof(edgetag)); //SEGMENTATION FAULT SEEMS TO LIE HERE (SIZEOF??)
(*e).v = theVertex; //the edges vertex is equal to the last read vertex
(*e).q = NULL;
以下是我的大部分计划:
menu_selection
有什么建议吗?
答案 0 :(得分:1)
MikeCat的评论是对的,您应该在while循环中添加i
的检查。
您的分段错误可能是由于文件要大而存储在char [100]中引起的。 char [100]表示文件中的字符不超过100个。
这样的事情可能会解决你的问题:
while(fgets(input, 2, file)){
if(input[0] == 'A' || input[0] == 'B' || input[0] == 'C' || input[0] == 'D' || input[0] == 'E' || input[0] == 'F' || input[0] == 'G' || input[0] == 'H' || input[0] == 'I' || input[0] == 'J' || input[0] == 'K' ||
input[0] == 'L' || input[0] == 'M' || input[0] == 'N' || input[0] == 'O' || input[0] == 'P' || input[0] == 'Q' || input[0] == 'R' || input[0] == 'S' || input[0] == 'T' || input[0] == 'U' || input[0] == 'V' ||
input[0] == 'W' || input[0] == 'X' || input[0] == 'Y' || input[0] == 'Z'){
if(i < 100){
text[i] = input[0];
i++;
}else{
// File is too big! Do something to handle the error
break;
}
}
}