我的名字变量是一个固定变量,位于结构学生内部。
运行代码时,输入部分会跳过名称,或者实际上,无论我在哪个字符变量中放置空格,都会跳过下一个字符输入。代码如下:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
struct student{
char name[50];
char roll[10];
char batch[20];
long int mob;
};
struct student *stud;
int main()
{
int num,i;
printf("Enter the number of students in the class: ");
scanf("%d",&num);
printf("Enter the following records: ");
FILE *fp;
fp = fopen("student.txt", "w");
for (i=0;i<num;i++)
{
stud = (struct student *)malloc(sizeof(struct student)*num);
printf("\nStudent %d: ",i+1);
printf("\nEnter Name: ");
scanf("%s",stud->name);
printf("\nEnter Roll No.: ");
scanf("%s",stud->roll);
printf("\nEnter Batch: ");
scanf("%s",stud->batch);
printf("Enter mobile number: ");
scanf("%ld",&stud->mob);
fprintf(fp,"%s %s %s %ld",stud->name,stud->roll,stud->batch,stud->mob);
}
fclose(fp);
return 0;
}
最佳答案
scanf
遇到空格后将停止读取字符。最好使用fgets
。
fgets(stud->name, 50, stdin);
注意,如果输入字符少于数组大小,则
fgets
也会读取'\n'
字符。您需要注意这一点。