我正在尝试用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
(不包括空格)并将其附加到 string o
)。所以输出应该是这样的:
str1: "12 34 56" (8)
str2: "___" (3)
out: "12___34 56"
out: "12 34___56"
如果我的代码中还有其他错误,请告诉我。
UPD:这不应该替换循环中的所有空格。如果源字符串包含 8 个空格,则应该打印 8 行,并且每行只替换一个空格。