Я пытаюсь заменить ' '
(пробел) на '___'
(тройное подчеркивание) в C.
Вот мой код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char *a = "12 34 56";
int a_l = strlen(a);
printf("str1: \"%s\" (%d)\n", a, a_l);
char *b = "___";
int b_l = strlen(b);
printf("str2: \"%s\" (%d)\n", b, b_l);
for (int i = 0; i < a_l; i++) {
if (a[i] == ' ') {
char *o = malloc(a_l + b_l);
strncpy(o, a, i);
strncpy(o + i, b, a_l);
//strncpy help
printf("out: \"%s\"\n", o);
}
}
return 0;
}
Я думаю, что пока это правильно, но мне нужно заменить строку комментария правильным strncpy
(взять остаток строки a
(исключая пробел) и добавить его к строке o
). Таким образом, вывод должен быть таким:
str1: "12 34 56" (8)
str2: "___" (3)
out: "12___34 56"
out: "12 34___56"
Если в моем коде есть другие ошибки, пожалуйста, сообщите мне.
UPD: Это не должно заменять все пробелы в цикле. Если исходная строка содержит 8 пробелов, то должно быть напечатано 8 строк и в каждой строке должен быть заменен только один пробел.
strtok()
изменяет строку, она не будет работать здесь наa
, которая указывает на буквальное/фиксированное"12 34 56"
. - person meaning-matters   schedule 01.07.2013