[英]String concatenation in c, not using function
我正在嘗試將不使用Dev-C ++編譯器中的函數的字符串連接起來。 所以我的代碼是:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(void){
char string1[] = "water", string2[] = "melon";
int i=0,j=0;
while(i++, string1[i] != 0);
for(j=0;string2[j] !=0; i++){
string1[i] = string2[j];
j++;
}
printf("%s",string1);
getch();
return 0;
}
我得到的輸出是:watermelp。 哪里出問題了?
注意:我不能使用*string1
和*string2
代替string1[]
和string2[]
。 因為我必須在聲明它們時使用const
(由於Wwrite-strings警告)。 這在連接為只讀位置的分配時會產生錯誤。 有什么解決辦法嗎?
您正在看到未定義行為的症狀。 您正在覆蓋不應該使用的內存。
使用時:
char string1[] = "water", string2[] = "melon";
string1
和string2
具有足夠的內存來分別保存"water"
和"melon"
。
采用
char string1[100] = "water", string2[] = "melon";
這樣, string1
將有足夠的內存來保存"watermelon"
。
改進建議:
代替
while(i++, string1[i] != 0);
采用
while ( string1[i] != 0 ) i++;
第二種形式不僅可讀性強,而且還避免了錯誤。 如果string1
為空字符串,則第一種形式將是錯誤的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.