Вот рабочий пример. Входной буфер должен быть достаточно большим, чтобы хранить замененную строку, поскольку требования гласят, что новая строка не должна создаваться.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void PrintComma(char* Text)
{
char* str = Text;
size_t c, len = strlen(Text);
for (c = 0; Text[c]; Text[c] == ' ' ? c++ : *Text++);
for (size_t i = 0; i < len + c; i++)
{
if (str[i] == ' ')
{
str[i] = ',';
char last = ' ';
for(size_t u = i + 1; u < len + c; u++)
{
char current = str[u];
str[u] = last;
last = current;
}
i += 2;
}
}
}
int main(void)
{
char tmp[100] = { 0 };
const char* TEST = "Hello world my name is";
memcpy(tmp, TEST, strlen(TEST));
printf("Input: %s\n", tmp);
PrintComma(tmp);
printf("Output: %s\n", tmp);
return 0;
}
Результат:
Input: Hello world my name is
Output: Hello, world, my, name, is