Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:通过指针的字符串连接_C_Pointers - Fatal编程技术网

C:通过指针的字符串连接

C:通过指针的字符串连接,c,pointers,C,Pointers,我在学C。。我有着C#的背景,我发现大部分都很容易过渡到。。然而,指针被证明是相当麻烦的。。我创建了一个小测试应用程序(见下文),用于通过指针连接2个字符串。我得到这个错误: error: invalid type argument of unary '*' (have 'int') 我该如何解决这个问题 void concatTest(); int main() { concatTest(); system("PAUSE"); return 0; } void

我在学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
}
void concertive();
int main()
{
concertive();
系统(“暂停”);
返回0;
}
void concertive()
{
字符string1[20],string2[20],string3[40];
字符*ptr1,*ptr2,*ptr3;
ptr1=&string1[0];
ptr2=&string2[0];
ptr3=&string3[0];
int i;
printf(“您需要输入2个字符串,每个字符串的长度不超过20个字符:\n”);
printf(“输入字符串#1:\n”);
scanf(“%s”,string1);
printf(“输入字符串#2:\n”);
scanf(“%s”,string2);
int len1=strlen(string1);
int len2=strlen(string2);
对于(i=0;i
ptr1[i]
已解除对阵列的引用。也不需要使用
*


[但是,即使您解决了这个问题,您的代码仍然是错误的;您没有考虑空终止符。]

您应该在此处使用
scanf(“%20s”,string1)
。您的第二个循环不正确,您需要从第二个字符串的开头开始复制(当然,仍然要附加到最后一个字符串的末尾).谢谢你给了我如此简明扼要的回答。我这里还有一个关于以null结尾的字符串的问题:添加一些文本可能有助于我们理解您想说什么!!评论很差,请更具体、更清晰地表达你的评论
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;