Это мой код о получении информации о студенте.Ядро отказа от сегментации (сбрасывается)
#include <stdio.h>
struct det{
char fname[25], lname[25], shift[10], sec[2];
int roll, clss, id;
};
int details();
int main(){
details();
getchar();
getchar();
return 0;
}
int details(){
char rl;
FILE *fp;
struct det n;
printf ("\n Enter Student Informations Below : \n\n");
printf (" First Name : ");
scanf ("%s",&n.fname);
printf (" Last Name : ");
scanf ("%s",&n.lname);
printf (" Roll : ");
scanf ("%d",&n.roll);
rl = (char) n.roll + ".txt";
fp = fopen(rl, "w");
printf (" ID : ");
scanf ("%d",&n.id);
printf (" Class : ");
scanf ("%d",&n.clss);
printf (" Shift : ");
scanf ("%s",&n.shift);
printf (" Section : ");
scanf ("%s",&n.sec);
// Works fine till here. Shows in console that segmentation fault, core dumped.
fprintf (fp, "\n Name : %s %s\n", n.fname, n.lname);
fprintf (fp, " Class : %d\n Roll : %d\n ID : %d\n", n.clss, n.roll, n.id);
fprintf (fp, " Section : %s\n Shift : %s\n", n.sec, n.shift);
fclose(fp);
printf ("\n\n Details Stored.\n\n Press Enter To Exit...");
return 0;
}
Работы хорошо до отмеченной линии. Но затем я получаю это сообщение на консоли «Ошибка сегментации». Ядро (Демпинговый). Может кто-нибудь, пожалуйста, скажите мне, что не так в коде и как его исправить?
Запустили ли вы свой код через отладчик? Или с чем-то вроде valgrind? – Evert
Вы смотрели какие-либо предупреждения компилятора? Обязательно включите их все, и не игнорируйте их, если вы не уверены в них. – Evert
Как минимум правильно отформатируйте свой код. Еще лучше приложите усилия, чтобы попытаться понять, где ваша программа идет не так (с помощью отладчика или вставлять отладочные заявления), и включать результаты такого расследования в вопрос. – davmac