C:通过指针的字符串连接
我在学C。。我有着C#的背景,我发现大部分都很容易过渡到。。然而,指针被证明是相当麻烦的。。我创建了一个小测试应用程序(见下文),用于通过指针连接2个字符串。我得到这个错误: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
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;