Я пытаюсь получить вход пользователя, записать ввод в файл, а затем использовать данные для структуры. Файл компилируется нормально, но после первого ввода я получаю сообщение об ошибке:Не удается найти причину ошибки сегментации (сбрасывание ядра) в C
$ gcc student.c -o student
$ ./student
Student First Name:
alex
Student Last Name:
Segmentation fault (core dumped)
Код:
/* student.h is to include the structure for stundent info */
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char sID[9];
char firstN[30];
char lastN[30];
}student[100];
#include "student.h"
int main()
{
FILE *sIf;
int i;
int num;
student *sI;
char *c;
char *b;
char *a;
sIf = fopen("student.txt", "a+");
if(!sIf)
{
printf("File could not be opened\n\a\a");
getchar();
return -1;
}
{
printf("Student First Name: \n");
scanf("%s", b);
printf("Student Last Name: \n");
scanf("%s", a);
printf("Student ID Number: \n");
scanf("%s", c);
fprintf(sIf, "%s, %s\t%s\n", a, b, c);
}
fclose(sIf);
return 0;
}
Выделите пространство для 'a, b, c' или объявите их как массив. – haccks
Вы должны скомпилировать с помощью 'gcc -Wall -g student.c -o student', и вам следует отлаживать использование' gdb student' –
Нечетно, что у вас есть тип 'student', определенный вне заголовка' 'student.h" ' , Также странно, что вы определили его как тип массива. Это значительно усложнит его использование; тип 'sI' является указателем на массив, и иногда это нормально, скорее всего, это приведет к путанице. (Это также неиспользуемый код в показанном прогаме - просмотрите, как создать MCVE ([Как создать минимальный, полный и проверенный пример?] (Http://stackoverflow.com/help/mcve)) или SSCCE ([Short, Self-Contained, Correct Example] (http://sscce.org/)) - два имени и ссылки для одной идеи.) –