gpt4 book ai didi

c - 在使用 scanf 的一系列输入中,未打印最后一个值(使用 printf)

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:42 26 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int i, j;
float k, l;
char a, b;
scanf("%d%d%f%f%c%c", &i, &j, &k, &l, &a, &b);
printf("%d %d %f %f %c %c", i, j, k, l, a, b);
return 0;
}

该程序接收所有六个输入,但打印前 5 个变量。

谁能指出我的概念/程序中的问题?

最佳答案

正如预测的那样,问题出在 %c

scanf("%d%d%f%f%c%c", &i, &j, &k, &l, &a, &b);

就目前而言,如果您输入如下所示,那么您的最后一个字符 d 将不会被读取 - 而不是 c 之后的空格被解释为您的字符输入:

1 2 3.0 4.0 c d

所以你的scanf应该改成:

scanf("%d%d%f%f %c %c", &i, &j, &k, &l, &a, &b);  // <-- Notice there is a space before each %c to read over space characters

注意:C 在这方面确实很奇怪,我想每个人都必须遇到这个问题几次才能记住这种奇怪的问题 - 你应该始终小心 %c of scanf,需要在前面加空格才能正确读取输入的字符。

关于c - 在使用 scanf 的一系列输入中,未打印最后一个值(使用 printf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35390993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com