我的一个朋友正在学习指针概念,所以他写了这个程序,但是我不知道为什么这个程序显示分段错误。任何人都可以通过找到此程序中的错误来帮助我这是代码:
#include<stdio.h>
#include<conio.h>
struct Student
{
/* data */
char name[20];
int age;
// int rollNo;
};
int main()
{
struct Student s1;
struct Student *ptr;
ptr = &s1;
scanf("%s",ptr->name);
scanf("%d",ptr->age);
// scanf("%d",ptr->rollNo);
printf("%s",(*ptr).name);
printf("%d",(*ptr).age);
// printf("%d",(*ptr).rollNo);
return 0;
}```
要读取整数时,需要将指针传递给scanf,如下所示:
scanf("%d", &(ptr->age));
您还需要通过检查返回值来确保输入有效,如下所示:
count = scanf("%d", &(ptr->age));
if (count == 1) {
/*an integer was entered*/
}
编译C程序时,应始终启用警告。例如,GCC编译器将告诉您有关原始程序的信息:
$ gcc -o test -Wall test.c
test.c: In function ‘main’:
test.c:16:10: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d", ptr->age);
~^ ~~~~~~~~
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句