我想在C字符在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函數。 –
@V_Maenolis好主意,但是由於'strtok()'修改了字符串,所以它不會在'a'這裏指向文字/固定''12 34 56「'。 –
在您的代碼示例中,您將創建兩個o字符串您必須首先計算字符串中的空格字符,然後分配適當的空間來容納新字符串或重新分配您找到的exery空間的o字符串。 –