c中的字符串连接,不使用函数

时间:2015-09-06 03:46:46

标签: c concatenation

我试图在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警告)。这会在作为只读位置的分配连接时出错。有什么解决方案吗?

1 个答案:

答案 0 :(得分:2)

您正在看到未定义行为的症状。你正在写你不应该的记忆。

使用时:

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是空字符串,则第一种形式将是错误的。