1

私は自分で実装しようとしていましたが、うまくいくようですが、どうやって最後にstrcat来たのかわかりません か? それは b からコピーしたものではなく、配置せずに存在するべきではありません。説明はありますか?出力は「yesMichaelJudy」です。p'\0'

#include<string.h>
#include<stdio.h>
#include <stdlib.h> 
#include<conio.h>


char* strcat1( char *s1, const char *s2 )
{
    register char  *p = s1;

    while ( *p )
          ++p;

    while (*s2){

        *p=*s2;
        ++p;
        ++s2;

    }

    if (*p=='\0') printf("yes");
    ++p;
    p='\0';

    return s1;
}


int main(){

    char* a;
    char* b;

    char* result;
    result=(char *)calloc(20,sizeof(char));
    a=(char *) calloc(20,sizeof(char));
    b=(char *) calloc(20,sizeof(char));
     strcpy (a,"Michael");
    strcpy (b,"Judy");
    result=strcat1(a,b);

    printf(result);

    getch();
    return 1;

}
4

6 に答える 6

0

pstrcat1parameter を介して渡された配列へのポイントs1。パラメータは の引数にs1対応します。mainの配列の内容は、によってデータで埋められます。これは、そのデータの最後にそれを置くものです。それをしました。(明示的に指定されていなくても、末尾にa があるため、それが由来していると言うこともできます)。amainastrcpy (a,"Michael")'\0'strcpy'\0'"Michael""Michael"'\0'

于 2013-06-04T23:59:14.977 に答える