为什么我的程序在 scanf 之后停止工作?
why is my program stopped working after the scanf?
我尝试制作一个简单的程序来使用结构输入学生信息,我很困惑为什么我的程序在我输入信息后立即停止
这是代码
#include <stdio.h>
struct studentScore {
char nim[11];
char name [30];
char subjectCode [5];
int sks;
char grade;
}students;
int main(){
int i,studNum;
printf("Name : ");
scanf("%s",students.name);
printf("\nNIM :");
scanf("%s",students.nim);
printf("\nSubject Code :");
scanf("%s",students.subjectCode);
printf("\nSKS :");
scanf("%d",&students.sks); // Program Crash after i input the SKS
printf("\nGrade :");
scanf("%c",students.grade);
for(i=0;i<studNum;i++){
printf("\nName : %s\n",students.name);
printf("NIM : %s\n",students.nim);
printf("Subject Code : %s\n",students.subjectCode);
printf("SKS : %d\n",students.sks);
printf("Grade : %c\n",students.grade);
}
return 0;
}
此语句中的参数
scanf("%c",students.grade);
必须是指向目标对象的指针并在转换说明符前放置一个空格
scanf( " %c", &students.grade );
^^^ ^^^
还有这个for循环
for(i=0;i<studNum;i++){
没有任何意义,至少因为变量 studNum
未初始化,并且您没有需要循环来输出其元素的数组。
我尝试制作一个简单的程序来使用结构输入学生信息,我很困惑为什么我的程序在我输入信息后立即停止 这是代码
#include <stdio.h>
struct studentScore {
char nim[11];
char name [30];
char subjectCode [5];
int sks;
char grade;
}students;
int main(){
int i,studNum;
printf("Name : ");
scanf("%s",students.name);
printf("\nNIM :");
scanf("%s",students.nim);
printf("\nSubject Code :");
scanf("%s",students.subjectCode);
printf("\nSKS :");
scanf("%d",&students.sks); // Program Crash after i input the SKS
printf("\nGrade :");
scanf("%c",students.grade);
for(i=0;i<studNum;i++){
printf("\nName : %s\n",students.name);
printf("NIM : %s\n",students.nim);
printf("Subject Code : %s\n",students.subjectCode);
printf("SKS : %d\n",students.sks);
printf("Grade : %c\n",students.grade);
}
return 0;
}
此语句中的参数
scanf("%c",students.grade);
必须是指向目标对象的指针并在转换说明符前放置一个空格
scanf( " %c", &students.grade );
^^^ ^^^
还有这个for循环
for(i=0;i<studNum;i++){
没有任何意义,至少因为变量 studNum
未初始化,并且您没有需要循环来输出其元素的数组。