【问题标题】:What to add to this Hello World code in C?用 C 语言向这个 Hello World 代码添加什么?
【发布时间】:2020-01-28 07:58:18
【问题描述】:

我对使用 C 进行编程非常陌生,我无法找到一种方法来添加到这个程序中以便拼写 "Hello, World!" 而不删除此处的任何代码行。

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

void modify_1(char *c);
void modify_2(char *c);

int main()
{
    char str1[10];
    char str2[15];
    printf("%s, %s!\n", str1, str2);
}

void modify_1(char *c)
{
    char *a_string = "hello";
}

void modify_2(char *c)
{
    char *a_string = "world";
}

【问题讨论】:

  • 该函数不返回任何内容。也不处理参数。你在哪里调用这些函数? *c 的引用是什么?

标签: c char int void


【解决方案1】:

我找不到添加到此程序以拼写"Hello, World!" 的方法 此处不删除任何代码行。

鉴于您无法删除任何行,您只需 添加 2 行代码到每个 modify_1modify_2 函数即可 (1)将 string-literals 复制到您的数组中,然后 (2) 将第一个字符从小写更改为大写,然后在打印之前调用 modify_1modify_2。 例如:

void modify_1 (char *c)
{
    char *a_string = "hello";
    strcpy (c, a_string);         /* copy a_string to your array */
    c[0] = c[0] + 'A' - 'a';      /* change 1st character to uppercase */
}

void modify_2 (char *c)
{
    char *a_string = "world";
    strcpy (c, a_string);         /* same thing */
    c[0] = c[0] + 'A' - 'a';
}

进行更改后,您只需在 main() 中的 print 语句之前调用函数,例如

int main()
{
    char str1[10];
    char str2[15];

    modify_1 (str1);
    modify_2 (str2);

    printf("%s, %s!\n", str1, str2);
}

使用/输出示例

$ ./bin/modify_12
Hello, World!

请参阅ASCII Table and Description 以了解从小写到大写的转换是如何发生的。

【讨论】:

  • @M.M - 谢谢。我处于自动驾驶状态,甚至没有接受那些添加 :) (打赌这令人困惑......魔术!)
【解决方案2】:

这可能不是给你分配任务的人的本意,但最简单的解决方案是在 main 中添加两行,其余部分保持不变(并且未使用 :-)

int main()
{
    char str1[10];
    char str2[15];
    strcpy(str1, "Hello");  // Add this line
    strcpy(str2, "World");  // Add this line
    printf("%s, %s!\n", str1, str2);
}

【讨论】:

    【解决方案3】:

    考虑以下代码(参见 onlineGDB 中的here):

    #include <stdio.h>
    #include <string.h>
    
    void modify_1(char *c);
    void modify_2(char *c);
    
    int main(void)
    {
        char str1[10];
        char str2[15];
    
        modify_1(str1);
        modify_2(str2);
        printf("%s, %s!\n", str1, str2);
    }
    
    void modify_1(char *c)
    {
        strcpy(c, "hello");
    }
    
    void modify_2(char *c)
    {
        strcpy(c, "world");
    }
    

    有一些变化:

    1. 您实际上调用了modify_1modify_2(否则,它们为什么会影响任何事情?)
    2. 在函数中,您使用strcpy 将文字的内容复制到地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多