无法将一个字符串与另一个字符串相等并在C中将其设置为printf

时间:2014-09-13 01:15:22

标签: c

因此,标题暗示了我的生活,我不能得到一个字符串等于另一个字符串的内容,然后正确打印。我只是为字符串弄乱了。这是代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <strings.h>

#define MAX_STRING_LEN 4

int main(void)
{
    int opselect, mhour, mminute, rhour, rminute, exit;
    char ampm[3];
    char am[3] = "AM";
    char pm[3] = "PM";

    printf("Please enter the military time in following format HH:MM \n");
    printf("(Example 13:25)\n");

    rhour = 12;
    rminute = 30;
    mhour = 13;
    mminute = 30;
    strcpy(am, ampm);

    printf("If the military time is %d:%d than the regular time is %d:%d %s.\n\n", mhour, mminute,         rhour, rminute, ampm);

    return 0;
}

程序返回

如果军事时间是13:30,那么正常时间是12:30 gibbersh。

两个随机字符代替gibbersh。对于我的生活,我看不出我做错了什么。任何帮助将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:1)

您可能想要这样做:

strcpy(ampm, am);而不是strcpy(am, ampm);从右到左。右边是来源,左边是dest。

读作:

copy string into first, from second

答案 1 :(得分:1)

在我看来,ampm未初始化,所以它只是打印当时内存中的内容。

答案 2 :(得分:0)

语法:       strcpy(destination,source);

在你的情况下,source是ampm,它有一些垃圾值。所以你得到了意想不到的结果。

这样做: - strcpy(ampm,am):