最后一个for循环怎么不执行?


#include <stdio.h>
void main()
{
    struct student
    {
        char name[10];
        char sex;
        int age;
        float score;
    }stu[5];
    printf("please enter name,sex,age,score for student\n");
    for (int i = 0; i < 5; i++)
    {
        scanf("%s,%c,%d,%f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
    }
    printf("输出信息\n");
    for (int i = 0; i < 5; i++)
    {
        if (stu[i].sex == 'f')
            printf("%s\t%d\t%4.1f\n", stu[i].name, stu[i].age, stu[i].score);
    }
}

img


#include <stdio.h>
void main()
{
    struct student
    {
        char *name[10];
        char xx[1];//////打印时用作间隔、、、、、
        char sex;
        int age;
        float score;
    }stu[2];
    printf("please enter name,sex,age,score for student\n");
    for (int i = 0; i < 2; i++)
    {
        scanf("%s %c %d %f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
        
    }
    printf("输出信息\n");
    for (int i = 0; i < 2; i++)
    {
        if (stu[i].sex == 'f')
            printf("%s\t%d\t%4.1f\n", stu[i].name, stu[i].age, stu[i].score);
    }
}

在纠结后面的循环不走之前,你先在前面的循环里打印,看看输入的到底是什么
目测应该所有参数都给了name,后面的没有赋值

第15行,输入语句修改为:scanf("%s %c %d %f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score); 以空格为间隔。

char name[10];是字符数组,要么在定义的时候直接初始化赋值,要么只能逐个赋值,建议使用用字符串指针
char *name;

你在输入的时候,逗号和后面的性别那个符号等都被认定为name了,所以就没有后面for循环进去了,但是if条件不满足,所以没有输出,可以按照下面的程序,打印一些符号什么的,帮助你分析程序死在什么地方。

#include <stdio.h>
 struct student
    {
        char name[10];
        char sex;
        int age;
        float score;
    }stu[5];
    
int main()
{
    int i=0;
    printf("please enter name,sex,age,score for student\n");
    for(i=0;i<1;i++)
    {
        scanf("%s",stu[i].name);
        getchar();
        scanf("%c",&stu[i].sex);
        getchar();
        scanf("%d,%f",&stu[i].age, &stu[i].score);
    }
    printf("输出信息\n");
    printf("123");
    for (i = 0; i < 1; i++)
    {
        printf("********");
        if (stu[i].sex=='f')
        {
            printf("123456");
            printf("%s %d %.1f\n", stu[i].name, stu[i].age, stu[i].score);
        }
        
    }
    return 0;
}

运行结果如下:

img