| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1725 人关注过本帖
标题:链接两个字符串
取消只看楼主 加入收藏
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
结帖率:100%
收藏
 问题点数:0 回复次数:9 
链接两个字符串
我想问问注释里面的(4),在i+到5以后是怎么工作的,不讲这个的或者乱扯淡的垃圾请不要发言,谢谢
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char s1[80], s2[40];
    int i = 0, j = 0;
    printf("Input s1:\n");
    scanf_s("%s", s1, 80);
    printf("\n");
    printf("Input s2:\n");
    scanf_s("%s", s2, 40);
    while (s1[i] != '\0')               //(1)这里只要s1[i] != '\0',i++;例如输入s1=123,s2=456,此时s1[2]=3,跳到(2)
        i++;
    while (s2[j] != '\0')               //(2)和(1)类似
        s1[i++] = s2[j++];               //(3)此时i++是从3即s1[3]开始+的,因为(1)中i的计数,一直加到5
    s1[i] = '\0';                       //(4)?这怎么实现?此时i是几,为什么?
    printf("\nThe new string is:\n");
    printf("%s", s1);
    printf("\n");
    return 0;
}


[此贴子已经被作者于2016-12-28 15:47编辑过]

搜索更多相关主题的帖子: 字符串 color 
2016-12-28 15:42
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 2楼 九转星河
那s1后面没有'\0'为什么不继续执行注释里(1)的位置
2016-12-28 16:11
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 5楼 吹水佬
我想问问注释(2)执行结束后,s1(5)后面有没有'\0'?为什么?如果没'\0',为什么不执行(1)?而且那个s1[i]='\0';表示是i几?
2016-12-28 16:33
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 4楼 吹水佬
哦,这样写i是6
2016-12-28 16:36
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 7楼 九转星河
求解释,我觉得很难
2016-12-28 16:37
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 4楼 吹水佬
你的意思是两个while之间是从上而下执行吗?
2016-12-28 16:41
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 5楼 吹水佬
谢了
2016-12-28 16:44
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 5楼 吹水佬
话说谭浩强出这题还真不错,陷阱这么多,一不留心就掉进去了,学习了
2016-12-28 16:51
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
回复 4楼 吹水佬
又查了一下别人写的代码,最后那个j的确是+1了,代码如下
程序代码:
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
    char c,str1[100],str2[100],str3[300];
    int i,j;
    printf("Please input the first string\nConfirm by Enter\n");
    gets(str1);
    printf("Please input the second string\nConfirm by Enter\n");
    gets(str2);
    for(i=0;(c=str1[i])!='\0';i++)
    {
        str3[i]=str1[i];
    };
    j=i;
    for(i=0;(c=str2[i])!='\0';i++,j++)
    {
        str3[j]=str2[i];
    };

    str3[j] = '\0';    //添加'\0'

    printf("The string which has been connected is:\n%s",str3);

    getch();
}

这个str3[j] = '\0';中的j是str3[j]=str2[i];中的j+1因为j++;
   
2016-12-28 17:06
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
搞懂了,谢谢各位大神提供的帮助
2016-12-28 17:09
快速回复:链接两个字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014346 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved