在下面的代码中,我只想在程序末尾使用一个 printf
来打印 12 小时时间,但我希望它根据存储的时间打印上午或下午在变量 am_pm
中。
我以为我读到过我可以将字符存储在 int(或 float ?)中,但我不确定我是否记得正确。当然,这似乎是非法的,因为我遇到了类型错误。
我还读到我可以使用数组来做到这一点,但我还没有了解数组,我想知道是否有更简单的替代方法来解决这样的问题。
我知道另一种方法是简单地使用两个 printf
,一个我简单地键入“am”,另一个我简单地在字符串的末尾键入“pm”,但这似乎对我来说是多余的。
#include <stdio.h>
int main(void) {
int hour, minutes, am_pm;
printf("Enter a 24-hour time:"); scanf("%d:%d", &hour, &minutes);
if (hour > 12)
{
hour = (hour - 12);
am_pm = "pm"; // ERROR
}
else
am_pm = "am"; // ERROR
printf("Equivalent 12-hour time: %.2d:%.2d%d", hour, minutes, am_pm);
} // end main
我怎样才能做类似于我在上面尝试做的事情?我知道在 python 中我会简单地做一些事情,比如 print("equivalent time is:"+ hour + minutes + am_pm)
最佳答案
您可以在 int 中存储单个字符。 int 的值是字符的 ASCII 码。每个int只有一个字符。这可能是您(错误)记住的内容。
正如其他人所写,将 am_pm 声明为 char *
,或者更好的是,声明为 const char *
。 const
告诉编译器指向的字符串是只读的。
另一种选择是将 'a' 或 'p' 作为 int 存储在 am_pm 中,
am_pm = 'p'; // Note single quotes for character (double quotes for strings)
然后写
printf("Equivalent 12-hour time: %.2d:%.2d%cm", hour, minutes, am_pm);
%c 表示将 am_pm 解释为一个字符。这利用了只有“am”/“pm”的第一个字母发生变化的事实。
关于C: 代替从分配它的变量打印字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929001/