两个scanf函数,但其中一个读取不同的值

两个scanf函数,但其中一个读取不同的值,c,string,decimal,scanf,C,String,Decimal,Scanf,在请求变量月份的输入后,我很难让程序读取之前输入的变量总计。总数总是28257,我不知道为什么 我发现在第11行使用“%c”是有效的,但我想知道为什么“%s”不起作用 #include <stdio.h> int main(void) { int total; char month; float sales; printf ("Enter total amount collected (-1 to quit): ");

在请求变量月份的输入后,我很难让程序读取之前输入的变量总计。总数总是28257,我不知道为什么

我发现在第11行使用
“%c”
是有效的,但我想知道为什么
“%s”
不起作用

    #include <stdio.h>  
    int main(void) { 

    int total; 
    char month;
    float sales;

    printf ("Enter total amount collected (-1 to quit): ");
    scanf("%d", &total);
    printf("Enter name of month: ");
    scanf("%s", &month);
    printf("total collections : $ %d\n", total);
    sales = (total/1.09);
    printf("sales : $ %.2f\n", sales);
    printf("county sales tax: $ %.2f\n", sales * 0.05);
    printf("state tax: $ %.2f\n", sales*0.04);
    printf("total sales tax collected: $ %.2f\n", sales *0.05 + sales *0.04);
    return 0;   }
#包括
int main(void){
整数合计;
炭月;
浮动销售;
printf(“输入收集的总金额(-1以退出):”;
scanf(“%d”,总计(&T);
printf(“输入月份名称:”);
scanf(“%s”和月份);
printf(“集合总数:$%d\n”,总计);
销售额=(总计/1.09);
printf(“销售额:$%.2f\n”,销售额);
printf(“县销售税:$%.2f\n”,销售额*0.05);
printf(“州税:$%.2f\n”,销售额*0.04);
printf(“征收的销售税总额:$%.2f\n”,销售额*0.05+销售额*0.04);
返回0;}

您将月份声明为字符,因此应使用%c进行输入%s用于输入字符数组。在scanf之前(“%c”、&month),也可以使用getchar()

  • getchar()
  • scanf(“%c”、&month)
字符月;scanf(“%s”和月份)是一个问题。研究
scanf()
以及
“%s”
的预期效果<代码>“%s”
要形成一个字符串(一个以空字符结尾的字符序列)
char
太小。您正在将一个“字符串”读入单个字符。