C语言/为什么打印出来的整型数据总是少第一个数?

img

源代码


#include
#include
#include
struct stu
{
    char s[40];
    int num;
    int n[3];

}stud[3];

void main()
{
    int i,j;
    FILE *fp;
    if((fp=fopen("tryfile","wr+"))==NULL)
    {
        printf("\n无法打开目标文件\n");
        exit(1);
    }
    printf("\n存入数据:字符串、整型数字、3个数的整型数组\n");
    for(i=0;i<3;i++)
    {
        printf("\n第%d次录入数据\n",i+1);
        gets(stud[i].s);getchar();
        scanf("%d",&stud[i].num);
        for(j=0;j<3;j++)
            scanf("%d",&stud[i].n[j]);getchar();
    
    }        
    fwrite(stud,3*sizeof(struct stu),5,fp);
    rewind(fp);
    fread(stud,3*sizeof(struct stu),5,fp);
    for(i=0;i<3;i++)
    {
        printf("\n%s\t%d\n",stud[i].s,stud[i].num);
        for(j=0;j<3;j++)
            printf("%d\n",stud[i].n[j]);
    }
    fclose(fp);
}

目测是你的 getchar(); 吃掉了一个字符

以下内容部分参考ChatGPT模型:


可能是因为你在打印整型数据时忘记了格式控制符中的占位符%d,导致第一个数被省略了。请在打印整型数据时加上占位符%d,例如:

printf("%d", num);

其中num为你要打印的整型变量名。如果还有其他问题,请提供更多代码和详细信息。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快