【发布时间】:2011-12-23 03:34:53
【问题描述】:
我是 C 编程的初学者。我在使用 printf 函数时遇到了麻烦。当我运行以下程序时,我遇到了分段错误。 请告诉我我做错了什么。 分段错误实际上是什么意思?
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char *name;
int rollnum;
int marks;
}
student_data;
int main()
{
student_data stud1;
student_data *ptr;
ptr = (student_data *)malloc(sizeof(student_data));
printf("\n NAME OF THE STUDENT: " );
scanf("%s", &ptr -> name);
printf("\n ROLL NUMBER OF THE STUDENT: " );
scanf("%d", &ptr -> rollnum);
printf("\n MARKS OF THE STUDENT: " );
scanf("%d", &ptr -> marks);
printf("\nPRINTING ROLL NUMBER %d", ptr -> rollnum);
printf("\nPRINTING MARKS %d", ptr -> marks);
printf("\nPRINTING NAME %s", ptr -> name);
}
-:输出:-
学生姓名:ajish
学生卷数:2
学生成绩:60
2 号印刷辊 印刷标记 60 分段错误
【问题讨论】:
-
你很幸运:字符串“ajish”被写入了你计算机内存中的一个未知位置,并且计算机没有崩溃。上次我尝试这样的事情时,我的电脑开始向窗户走去,如果我没有停下来,它就会自行抛出:-)
-
@pmg :-)) xkcd.com/293
-
@pmg +1 这个好评论!!