我只是在学习 C 并达到了指针的目的。我写了一个应该连接两个 char 指针的方法,但我遇到了一个奇怪的行为,我无法向自己解释,也没有找到答案,所以也许你可以帮忙!
所以我不明白为什么stringcat
并stringptr
指向不同的地址,即 8 字节设备。其次,我不明白为什么我不能stringcat
在底部的两个while循环中使用。我只是没有得到任何输出。另外,如果我stringptr[0]
在 lastprintf
中使用,将不会有任何输出。
提前谢谢你的帮助!
编辑:这段代码有效,我只是不明白为什么我不能stringcat
在底部使用。
Edit2:在复制粘贴时注意到一些 * 丢失了,所以我添加了它们!
char stringcat(const char str1, const char* str2){
char *ptr1 = str1;
char *ptr2 = str2;
int count = 0;
while(*ptr1 != '\0'){
count++;
ptr1++;
}
while(*ptr2 != '\0'){
count++;
ptr2++;
}
char *stringcat = malloc((count+1)*sizeof(char));
char *stringptr = stringcat;
printf("%d %d", &stringcat, &stringptr);
ptr1 = str1;
ptr2 = str2;
while(*ptr1 != '\0' && (stringptr++ = ptr1++));
printf("%c", stringcat[0]);
while(*stringptr++ = *ptr2++);
return stringcat;
}