Что добавить в этот код Hello World в C? - PullRequest
0 голосов
/ 28 сентября 2019

Я очень новичок в программировании на 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";
}

Ответы [ 3 ]

1 голос
/ 28 сентября 2019

Я не могу найти способ добавить в эту программу, чтобы написать "Hello, World!" без удаления здесь каких-либо строк кода.

Учитывая, что вы не можете удалить какие-либо строки,вам нужно только добавить 2 строки кода к каждой из ваших modify_1 и modify_2 функций, чтобы (1) скопировать string-literals в вашмассив, а затем (2) измените первые символы из строчных в прописные, а затем просто вызовите modify_1 и modify_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(), например:

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 и описание , чтобы понять, как происходит преобразование из строчных в прописные.

1 голос
/ 28 сентября 2019

Рассмотрим следующий код (см. здесь в onlineGDB):

#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_1и modify_2 (в противном случае, почему они повлияют на что-либо?)
  2. Внутри функций вы используете strcpy для копирования содержимого литерала по адресу.
0 голосов
/ 28 сентября 2019

Это, вероятно, не то, что задумал человек, который дал вам задание, но самое простое решение - добавить две строки в 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);
}
...