我已经尝试过调试这段代码但是当我循环遍历while循环中的字符串时,它看起来并不像我骑自行车。调用函数后,目标数组不会更改。
void stringConcatenate(char * destination, char * source)
{
int index1 = 0; //for cycling subscripts
int index2 = 0;
while (destination[index1] != '\0') //cycle to end of first string
{
index1++;
}
index1++; //to get to null character
while (source[index2] != '\0') //cycle through second string appending along the way
{
destination[index1] = source[index2];
index1++;
index2++;
}
destination[index1] = '\0'; //append null point
}
答案 0 :(得分:1)
第一个index1
语句之后的行while
不应该在那里。
index1++; //to get to null character <-- incorrect.
index
已指向终止符。通过递增它,你最终在终结符之后将字符串附加一个字符。
答案 1 :(得分:0)
还有另一种使用指针连接两个字符串的方法,你也应该尝试这个。
#include<stdio.h>
void concat(char* ,char* );
void main(void)
{
char str1[25],str2[25];
printf("\nEnter First String:");
gets(str1);
printf("\nEnter Second String:");
gets(str2);
concat(str1,str2); //1
printf("\nConcatenated String is %s",str1);
}
void concat(char *s1,char *s2)
{
while(*s1!='\0') //2
s1++
while(*s2!='\0') //3
{
*s1=*s2; //4
s1++;
s2++;
}
*s1='\0'; //5
}