所以我觉得我并不是非常理解getchar()
功能......我认为代码会做的是,如果碰巧有一个空间,那么它就会#34;吃"具有getchar()
功能的空间。如果碰巧没有" p"在输入中(如在下午1:30),它将只是保持"吃"输入,直到只留下'\n'
。此时它将结束while循环。但无论如何,这里的代码是:
int main(void)
{
int hour, min;
char ch;
printf("Enter a 12-hour time: ");
scanf("%d : %d", &hour, &min);
while ((ch = getchar()) != '\n')
{
if (toupper(ch) == 'P')
{ hour += 12; }
getchar();
}
printf("24-hour time: %d:%d", hour, min);
return 0;
}
答案 0 :(得分:1)
您可能会在getchar()
循环中额外调用while
,这可能会干扰您的逻辑。去掉它。你只需要:
while ((ch = getchar()) != '\n')
{
if (toupper(ch) == 'P')
{
hour += 12;
}
}
要使其清晰,请将ch
的类型从char
更改为int
,因为getchar()
的返回类型为int
并检查{{1}对抗EOF也是。
ch
答案 1 :(得分:1)
getchar()
用于从标准输入读取char
。在这里,您已经阅读了scanf()
的用户输入。所以你的代码可能是:
#include <stdio.h>
#include <string.h>
int main(void)
{
int hour, min;
char ch;
printf("Enter a 12-hour time: ");
char fmt[3];
scanf("%d : %d %s", &hour, &min, fmt);
if (strcmp(fmt, "pm") == 0) {
hour += 12;
}
printf("24-hour time: %d:%d", hour, min);
return 0;
}