我的课堂作业要求我提示用户在一个输入行中输入四个变量char float int char。

这是完整的代码:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>

int main(void){
    char h = 'a';
    char b, c, d, e;
    int m, n, o;
    float y, z, x;
    short shrt = SHRT_MAX;
    double inf = HUGE_VAL;

    printf("Program: Data Exercises\n");

    printf("%c\n", h);
    printf("%d\n", h);

    printf("%d\n", shrt);

    printf("%f\n", inf);

    printf("Enter char int char float: ");
    scanf("%c %d %c %f", &b, &m, &c, &y);
    printf("You entered: '%c' %d '%c' %.3f \n", b, m, c, y);


这部分代码是我遇到问题的地方。

    printf("Enter char float int char: ");
    scanf("%c %f %d %c", &d, &z, &n, &e);
    printf("You entered: '%c' %f %d '%c' \n", d, z, n, e);


如果我隔离以上部分,则此部分有效。

    printf("Enter an integer value: ");
    scanf("%d", &o);
    printf("You entered: %15.15d \n", o);

    printf("Enter a float value: ");
    scanf("%f", &x);
    printf("You entered: %15.2f \n", x);

    return 0;
}


看到由于没有足够高的声望而无法发布图像,因此我将在运行该程序时提供指向控制台屏幕截图的链接。



如果有人可以向我解释为什么该程序无法正常工作,我将不胜感激。提前致谢。

最佳答案

您在此行中有一个错误:

scanf("%c %d %c %f", &b, &m, &c, &y);


您需要在%c之前添加一个空格。
试试这条线

scanf(" %c %d %c %f", &b, &m, &c, &y);  // add one space %c
scanf(" %c %f %d %c", &d, &z, &n, &e);


这是因为在输入数字并按Enter之后,新行将保留在缓冲区中,并由下一个scanf处理。

关于c - Scanf(“%c%f%d%c”)返回奇怪的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29450731/

10-11 04:33