我的名字变量是一个固定变量,位于结构学生内部。

运行代码时,输​​入部分会跳过名称,或者实际上,无论我在哪个字符变量中放置空格,都会跳过下一个字符输入。代码如下:

#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'字符。您需要注意这一点。

10-08 14:26