Продублировать каждую букву слова на СИ

В рядок вводится имя, фамилия и отчество. Нужно взять имя, продублировать кажую букву, после чего засунуть обратно в исходную строку.

#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() 
{
    char s[80];
    int i;
    printf("Enter a string: ");
    gets(s);
    for (i = 0; i < strlen(s); i++) 
    {
        s[i] = s[i] * 2;
        if (s[i] != " ")
        {
            break;
        }
    }
    printf("%s", s);
    return 0;
}

Ответы (1 шт):

Автор решения: Zhihar

алгоритм

  1. выделить имя из строки, т.е. найти позицию первого разделителя ',' - pos

  2. создать новую строку размером не меньшим, чем pos + len(text)

  3. вписать в новую строку буквы первого слова (по 2 раза), можно через функцию strncat()

  4. вписать в новую строку часть старой строки, начиная с pos

чтобы все сделать именно в одной строке - это в общем случае невозможно ибо новая строка большего размера и не факт, что в старой было выделено достаточно памяти

P.S.

касательно вашего кода:

s[i] = s[i] * 2;

это не питон, в c++ так буквы не удваиваются,в c++ все более примитивно:

new_str[j++] = old_str[i];
new_str[j++] = old_str[i];

ну или через strncat

→ Ссылка