0

私はCを学んでいます。C#のバックグラウンドから来ています。ほとんどの場合、に移行するのは非常に簡単です。しかし、ポインターは非常に面倒です。ポインターを介して2つの文字列を連結するための小さなテストアプリ(以下を参照)を作成しました。このエラーが発生します:

error: invalid type argument of unary '*' (have 'int')

これを修正するにはどうすればよいですか?

void concatTest();

int main()
{
    concatTest();

    system("PAUSE");
    return 0;
}

void concatTest()
{
    char string1[20], string2[20], string3[40];
    char *ptr1, *ptr2, *ptr3;
    ptr1 = &string1[0];
    ptr2 = &string2[0];
    ptr3 = &string3[0];
    int i;

    printf("You need to enter 2 strings.. each of which is no more than 20 chars in length: \n");

    printf("Enter string #1: \n");
    scanf("%s", string1);

    printf("Enter string #2: \n");
    scanf("%s", string2);

    int len1 = strlen(string1);
    int len2 = strlen(string2);

    for (i = 0; i < len1; i++)
    {
        *ptr3[i] = *ptr1[i];
    }
    for (i = len1; i < len1 + len2; i++)
    {
        *ptr3[i] = *ptr2[i];
    }
    //TODO: show concatenated string on console
}
4

2 に答える 2

2

ptr1[i]すでに配列の参照を解除しています。*同様に使用する必要はありません。

[ただし、それを修正しても、コードは壊れたままです。nullターミネータを考慮していません。]

于 2012-07-15T23:38:03.200 に答える
-2
the name of array as a point
ptr1  = string1; ptr1 point at the array string1,so ptr1[i] is just like string1[i]

ptr1  = string1;
ptr2  = string2;
ptr3  = string3;
于 2012-07-16T04:17:24.733 に答える