-2

strcat 関数をコーディングしました。しかし、私の関数はこのようには実行されません -----> char * mystrcat(char *s,char *t)。ポインターを返したい。手伝って頂けますか?

#include <stdio.h>

void mystrcat(char *s,char *t)
{
    while(*s!='\0')
        s++;
        s--;
    while((*(s+1)=*t)!='\0')
    {   s++;
        t++;
    }
}

int main()
{

    char str[30], str1[30];
   gets(str);
   gets(str1);
   mystrcat(str, str1);
    printf("%s\n",str);
    return 0;
}
4

2 に答える 2

0

あなたが書くとき、void mystrcat(char *s,char *t)あなたはvoidを使って「私は戻り値を持っていません」と言っています。ポインタを返したい場合、これはであってはなりませんvoid

文字列へのポインタを返すには、を使用しますchar**

一連の文字である文字列は、として表されますchar*

コードを使用した例を次に示します。

#include <stdio.h>

char** mystrcat(char *s,char *t)
{
    char *sOrig = s;
    while(*s!='\0'){
        s++;
    }
    s--;

    while( ( *(s+1) = *t) != '\0')
    {
        s++;
        t++;
    }
    return &sOrig;
}

int main()
{
   char str[30], str1[30];
   gets(str);
   gets(str1);
   char** concatValuePointer = mystrcat(str, str1);
   printf("Pointer is %p\n",concatValuePointer);
   return 0;
}
于 2013-01-04T20:41:19.060 に答える
0

関数には戻り値がありません。そこからポインターを返したい場合は、それを返すだけです。また、そのためにはvoidは正しくありません

于 2013-01-04T20:14:39.340 に答える