我將目標的大小定義爲string1的大小。然後我添加了string2到目標。我沒有增加我的目標的大小。爲什麼我的靜止代碼工作?每當我更改其內容時,是否需要更改我的字符指針的大小?
char *string1 = "this is a ";
char *target = malloc(sizeof(string1)); // if i don't do this, code gives error.
strcpy(target, string1);
printf("%s\n", target);
char *string2 = "string";
strcat(target, string2); // how come I don't need to call malloc again?
printf("%s\n", target); // works
我在Mac上用Xcode編譯了這個。
您的代碼從頭到尾都是錯誤的。 – cnicutar
sizeof(string1)是4(取決於機器),因爲指針存儲爲整數。 –
使用'char * target = malloc(strlen(string1)+ 1);'。然後在'strcat()'之前使用'target = realloc(target,strlen(string1)strlen(string2)+ 1);' – chux