|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define MAX 1024
- int main()
- {
- char str1[MAX];
- char str2[MAX];
- char str3[MAX];
-
- char *target1 = str1;
- char *target2 = str2;
- char *target3 = str3;
- int i=0;
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
-
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- while ((*target3++=*target1++) != '\n')
- {
-
- i++;
- }
-
- while ((*(target3+i)=*target2++) != '\0')
- {
-
- i++ ;
- }
- printf("%d\n",i);
- printf("%c\n",*(target3+3));
- printf("%c\n",*(target3+2));
- printf("连接后的结果是:%c%c%c%c\n", str3[0],str3[1],str3[2],str3[3]);
- return 0;
- }
复制代码
str1和str2都已经加进去str3了,为何只打印了str1。我已经想了一天了,要崩溃了,有没有大佬帮帮忙
非常抱歉之前的回答有误。使用指针逐个复制字符的方式是可以实现字符串拼接的,但是你之前的代码存在一些问题。
首先,你声明了str1、str2和str3为字符变量,而不是字符数组。这将导致在使用fgets函数时出现段错误。正确的声明方式应该是:
- char str1[MAX];
- char str2[MAX];
- char str3[MAX*2]; // 结果最大长度是两个字符串的长度之和
复制代码
其次,在将str1和str2的内容拼接到str3中时,你通过target1和target2指针来逐个字符复制,但是你没有正确初始化target1和target2指针,也没有将它们指向str1和str2。正确的方式应该是:
- char *target1 = str1;
- char *target2 = str2;
- char *target3 = str3;
复制代码
然后,在循环内部,你需要将target3、target1和target2指针逐一增加,以复制字符和移动指针位置。修改后的循环应该如下:
- while (*target1 != '\0') {
- *target3 = *target1;
- target1++;
- target3++;
- }
- while (*target2 != '\0') {
- *target3 = *target2;
- target2++;
- target3++;
- }
复制代码
最后,如果你想要在连接后的结果上直接进行打印,可以将str3作为一个字符串进行输出,而不是单个字符。修改打印语句为:
- printf("连接后的结果是:%s\n", str3);
复制代码
请注意,以上修改后的代码完整示例如下:
- #include <stdio.h>
- #define MAX 1024
- int main() {
- char str1[MAX];
- char str2[MAX];
- char str3[MAX*2]; // 结果最大长度是两个字符串的长度之和
- char *target1 = str1;
- char *target2 = str2;
- char *target3 = str3;
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- while (*target1 != '\0') {
- *target3 = *target1;
- target1++;
- target3++;
- }
- while (*target2 != '\0') {
- *target3 = *target2;
- target2++;
- target3++;
- }
- *target3 = '\0';
- printf("连接后的结果是:%s\n", str3);
- return 0;
- }
复制代码
希望这次能够满足你的要求!如果还有任何疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
-
|