簡體   English   中英

c中的字符串串聯,不使用函數

[英]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";

string1string2具有足夠的內存來分別保存"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM