鱼C论坛

 找回密码
 立即注册
查看: 947|回复: 8

[已解决]填空题求解

[复制链接]
发表于 2021-7-30 22:26:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入两个字符串分别存放到字符数组str1和str2中,将str2中的字符串全部链接到str1中字符串的尾部,并将链接得到的更长的字符串存放在str1数组中。
#include<stdio.h>
int main(){
    char str1[81], str2[40];
    int i=0,j=0;
    gets(str1); gets(str2);
    while(str1[i]!='\0')
         ①;
    while(②){
        str1[i]=str2[j];
        ③;
        j++;
    }
    str[i]=④;
    puts(str1);
    return 0;
}

这四个空怎么填?
最佳答案
2021-7-30 23:00:21
老哥先给你点思路想想,你先自己动手试试
str2要加到str1后面,你首先就指向str1尾部了,然后再将str2拼接到str1后面,最后一位记得加终止符'\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-30 22:50:34 | 显示全部楼层
好家伙,你直接问答案了都
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-30 23:00:21 | 显示全部楼层    本楼为最佳答案   
老哥先给你点思路想想,你先自己动手试试
str2要加到str1后面,你首先就指向str1尾部了,然后再将str2拼接到str1后面,最后一位记得加终止符'\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-30 23:33:09 | 显示全部楼层
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char str1[81], str2[40];
  5.     int i=0,j=0;
  6.     gets(str1); gets(str2);
  7.     while(str1[i]!='\0')
  8.          i++;
  9.     while(str2[j]!='\0'){
  10.         str1[i]=str2[j];
  11.         i++;
  12.         j++;
  13.     }
  14.     str1[i+1]='\0';
  15.     puts(str1);
  16.     return 0;
  17. }

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-31 20:50:29 | 显示全部楼层

老哥,你这并没有将字符串连接起来啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-31 20:52:36 | 显示全部楼层

                               
登录/注册后可看大图

啊这,我的可以呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-31 21:01:48 | 显示全部楼层
大马强 发表于 2021-7-31 20:52
啊这,我的可以呀

我换个编译器试试吧.....我用的VS2013
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 23:35:02 | 显示全部楼层

边界错误,i 不应该加 1

  1. $ cat main.c
  2. #include<stdio.h>
  3. int main()
  4. {
  5.     char str1[81], str2[40];
  6.     int i=0,j=0;
  7.     gets(str1); gets(str2);
  8.     while(str1[i]!='\0')
  9.          i++;
  10.     while(str2[j]!='\0'){
  11.         str1[i]=str2[j];
  12.         i++;
  13.         j++;
  14.     }
  15.     str1[i+1]='\0';
  16.     puts(str1);
  17.     return 0;
  18. }

  19. $ gcc -g -Wall -o main main.c
  20. $ ./main
  21. qwer
  22. asdf
  23. qwerasdf&#9618;
  24. $
复制代码

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char str1[81], str2[40];
  5.     int i=0,j=0;
  6.     gets(str1); gets(str2);
  7.     while(str1[i]!='\0')
  8.          i++;
  9.     while(str2[j]!='\0'){
  10.         str1[i]=str2[j];
  11.         i++;
  12.         j++;
  13.     }
  14.     //str1[i+1]='\0';
  15.     str1[i]='\0';
  16.     puts(str1);
  17.     return 0;
  18. }

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 23:45:27 | 显示全部楼层
人造人 发表于 2021-8-2 23:35
边界错误,i 不应该加 1

大意了,不该加一,循环是先加一在判断的,多加了一次,谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表