ここは私のコードの一部です。コードを実行すると、ユーザーからの入力を要求し、それを自分の構造体に記録されている別の整数と照合します。ユーザーの入力が一致している場合は、正しく動作しています。しかし、ユーザーが間違った入力を入力すると、セグメント化エラーが発生します。どこでコードを変更する必要がありますか?整数を比較するとC分割エラーが発生する
long int userInput,endCheck; // Input from user
int flag=0; // check for match
int status;
int c; // controlling ctrl+D
int position= 999; // position of where the user input and data matched
LABEL:
printf("\n\t---------------------------------------\n");
printf("\n\nPlease enter the student ID which you want to find(3-times CTRL+D for finish):\n");
scanf("%d",&userInput);
if((c=getchar()) == EOF){
exit(0);
}
for(i=0;i<lines,flag==0;i++){
if(index[i].id == userInput){
position=i;
flag=1;
}else{
position=999;
}
}
if(flag==0){
printf("id not found");
}
studentInfo info; // for storing the information which we will take between determined offsets
if(position!= 999){
if ((pos = lseek(mainFile,index[position].offset , SEEK_SET)) == -1)/*going to determined offset and setting it as starting offset*/
{ perror("classlist"); return 4; }
while ((ret= read(mainFile,&info, sizeof(info))) > 0 ){
printf("\n\nStudent ID: %d, Student Name: %s\n\n",info.id,info.name);
break;// to not take another students' informations.
}
}
flag=0;
goto LABEL;
printf("Program is terminated");
'index'とは何ですか? –
segfaultはどの行にありますか?あなたが参照する「間違った入力」とは何ですか?なぜ、あなたはgotosを使用していますか?なぜGOTOを使用していますか? – nicomp
インデックスは私の構造です。私の構造では学生IDがあり、それをユーザーの入力と照合しようとしています。 –