我自己的连接函数不会改变目标字符串

时间:2014-05-01 01:42:11

标签: c++ visual-studio-2010

我已经尝试过调试这段代码但是当我循环遍历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

}

2 个答案:

答案 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
}