在C语言中很难使一个字符串等于另一个字符串,也很难使它正确地打印出来

在C语言中很难使一个字符串等于另一个字符串,也很难使它正确地打印出来,c,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, rm

因此,正如标题所暗示的那样,我无法让一个字符串等于另一个字符串的内容,然后正确打印。我只是对这根绳子胡说八道。代码如下:

#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吉布斯

两个随机字符代替Gibbers。就我的一生而言,我看不出我做错了什么。任何帮助都将不胜感激


谢谢

您可能想这样做:

strcpyampm,am;而不是strcpyam,ampm;从右向左移动。右边是源,左边是目标

改为:


将字符串从第二个复制到第一个

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

语法: strcpy目的地、来源

在您的例子中,源是具有一些垃圾值的ampm。所以你得到了意想不到的结果


这样做:-strcpyampm,am:

也许strcpyampm,am;?你有向后strcpy的参数,记住它们的方法是,它们的顺序与普通赋值相同:目的地第一,来源第二。