#include <stdio.h>
void MyStrcat(char _szStr1, char _szStr2);int main(int argc, char* argv[])
{
char szStr1[10] = "";
char szStr2[10] = "";
scanf("%s", szStr1);
scanf("%s", szStr2); MyStrcat(szStr1, szStr2); return 0;
}void MyStrcat(char _szStr1[], char _szStr2[])
{
for(int i=0; i<10; i++)
{
if(_szStr1[i] == '\0')
{
int j = 0;
while(j != '\0')
{
_szStr1[i] = _szStr2[j];
j++;
i++;
}
}
}
_szStr1[i] = '\0'; return;
}

解决方案 »

  1.   

    修改后是正确的,红色标出的地方看一看!
    但算法有些不太好,可以再想想。#include <stdio.h> void MyStrcat(char _szStr1[], char _szStr2[]); int main(int argc, char* argv[]) 

    char szStr1[10] = ""; 
    char szStr2[10] = ""; 
    scanf("%s", szStr1); 
    scanf("%s", szStr2);  MyStrcat(szStr1, szStr2);  return 0; 
    } void MyStrcat(char _szStr1[], char _szStr2[]) 

    for(int i=0; i <10; i++) 

    if(_szStr1[i] == '\0') 

    int j = 0; 
    while(_szStr2[j] != '\0') 

    _szStr1[i] = _szStr2[j]; 
    j++; 
    i++; 

    break;


    _szStr1[i] = '\0';  return; 
    }
      

  2.   

    按你的意思 MyStrcat函数可以改成下面这样(其中红色是为了防止连接后的长度超过szStr1空间。void MyStrcat(char _szStr1[], char _szStr2[]) 
    {
    int i = 0;
    while(i < 10) 
    {
    if(_szStr1[i] == '\0')
    break;
    i++;
    } int j = 0; 
    while(i < (10 - 1) && _szStr2[j] != '\0') 

    _szStr1[i] = _szStr2[j]; 
    j++; 
    i++; 
    }
    _szStr1[i] = '\0';  return; 
    }