Mr丶张 发表于 2021-5-18 23:23:40

关于结构体读取输出 出错

为什么这段不能正常读取和输出结构体当中的内容呢
#include<stdio.h>
#include<string.h>
struct Student
{
        char num;
        char name;
        float score;
}student;

int main()
{
char max, i;

for(i = 0; i < 3; i++)
{
        scanf("%c%s%f",&student.num, student.name, &student.score);
}

for(i = 0; i < 3; i++)
{
        printf("%c %s %.2f\n",student.num, student.name,student.score);
}

printf("The higer score is:\n");

return 0;
}       

ba21 发表于 2021-5-18 23:25:33

scanf("%c%s%f",&student.num, student.name, &student.score);
"%c%s%f" // 分割符呢?
student.name // &呢?

Mr丶张 发表于 2021-5-19 09:09:36

ba21 发表于 2021-5-18 23:25
scanf("%c%s%f",&student.num, student.name, &student.score);
"%c%s%f" // 分割符呢?
student.name / ...

数组不是不用取址吗

人造人 发表于 2021-5-19 09:24:05

#include<stdio.h>
#include<string.h>
struct Student
{
    char num;
    char name;
    float score;
}student;

int main()
{
    //char max, i;
    int max, i;

    for(i = 0; i < 3; i++)
    {
      scanf("%c%s%f",&student.num, student.name, &student.score);
      getchar();
    }

    for(i = 0; i < 3; i++)
    {
      printf("%c %s %.2f\n",student.num, student.name,student.score);
    }

    printf("The higer score is:\n");

    return 0;
}      

Mr丶张 发表于 2021-5-19 09:49:13

人造人 发表于 2021-5-19 09:24


请问这里为什么要加一个getchar呢

人造人 发表于 2021-5-19 10:17:48

Mr丶张 发表于 2021-5-19 09:49
请问这里为什么要加一个getchar呢

去掉在输入流中最后那个多余的 '\n'

最强废铁h 发表于 2021-5-25 09:08:57

人造人 发表于 2021-5-19 09:24


什么情况下要用getchar()??

人造人 发表于 2021-5-25 09:48:31

最强废铁h 发表于 2021-5-25 09:08
什么情况下要用getchar()??

当 scanf 最后一个接收的不是 %c 的时候
#include <stdio.h>

int main(void) {
    int a, b, c;
    char ch;
    scanf("%d%d%d", &a, &b, &c);
    getchar();
    scanf("%c", &ch);
    printf("%d, %d, %d, '%c'\n", a, b, c, ch);
    return 0;
}

#include <stdio.h>

int main(void) {
    int a, b, c;
    char ch1, ch2;
    scanf("%d%d%d%c", &a, &b, &c, &ch1);
    scanf("%c", &ch2);
    printf("0x%x, 0x%x\n", ch1, ch2);
    printf("%d, %d, %d\n", a, b, c);
    return 0;
}
页: [1]
查看完整版本: 关于结构体读取输出 出错