在运行时向结构成员提供输入时获得分段错误

时间:2015-02-20 13:47:41

标签: memory kernel gdb

我写了一个小代码来获取' n'学生人数。 但在运行该程序后,我遇到了段错误。请找到以下代码。

struct students
{
     char name[20];
     int age;
     int id;
}student[100];
int main()
{
      int count;
      int no_students;
      printf("Enter no of students");
      scanf("%d",&no_students);
      for (count = 1 ; count <= no_students ; count++)
      {
           printf("Enter the details for student%d\n",count);
           printf("Name:");
           scanf("%s",student[count].name);
           printf("Age:");
           scanf("%d",student[count].age);
           printf("ID:");
           scanf("%d",student[count].id);
      }
      return 0; 
 }

 root@debian:/home/renga/C_code# ./nike
 Enter no of students3
 Enter the details for student1
 Name:renga
 Age:12
 Segmentation fault

2 个答案:

答案 0 :(得分:0)

遇到问题,在scanf中错过了参考运算符。

        printf("Age:");
        scanf("%d",&(student[count].age));
        printf("ID:");
        scanf("%d",&(student[count].id));

答案 1 :(得分:0)

这可能不是问C语言帮助/语法问题的合适组。我建议你阅读一本优秀的C编程语言书:http://www.cprogramming.com/tutorial/c-tutorial.html

话虽如此,问题是,您正在尝试错误地读取您的int数据类型(age&amp; id)值。您需要将值读入变量的地址,如下所示......

scanf("%d",&student[count].age);