| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 623 人关注过本帖
标题:关于复制的问题
只看楼主 加入收藏
异世妖
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
关于复制的问题
要求编写一个程序,将字符数组2中的全部字符复制到1中。不用strcpy函数,复制时,‘\0’也要复制过去,但其后面的字符不用复制。
#include<stdio.h>
int main()

{
    char str1[100],str2[100];
   
    int i;
    printf("请输入一组字符串:\n");
    gets(str2);
   
    for(i=0;i<strlen(str2);i++)
    {
        str1[i] = str2[i];
        if(str2[i]=='\0' && str2[i+1]!='\0')
             break;
    }
   
    puts(str1);
    return 0;
}
哪里错了,为什么会输出好多“烫”字。。。。。。。。
搜索更多相关主题的帖子: 字符串 
2011-10-17 20:01
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:3 
#include<stdio.h>
int main()

{
    char str1[100],str2[100];
   
    int i;
    printf("请输入一组字符串:\n");
    gets(str2);
   
    for(i=0;i<strlen(str2);i++)
    {
        str1[i] = str2[i];
        
        if(str1[i]!=='\0')
             break;
    }
   
    puts(str1);
    return 0;
}





会越界的if(str2[i]=='\0' && str2[i+1]!='\0')
             break;

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-17 20:36
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:3 
别的不说,,str1都没赋值就用了,,而且循环也不对,,给你参考下书上给的标准答案
程序代码:
# include <stdio.h>

int main(void)
{
    char s1[80],s2[40];

    int i = 0,j = 0;

    printf("\n请输入第一个字符串:");
    scanf("%s",s1);

    printf("请输入第二个字符串:");
    scanf("%s",s2);

    while(s1[i] != '\0')    //先使i指向s1字符串除\0外的最后位置
        i++;

    while(s2[j] != '\0')    //从原s1字符串的原\0位置起复制s2字符串
        s1[i++] = s2[j++];

    s1[i] = '\0';           //使接连后的字符串最后加上\0

    printf("连接后的字符串为: %s\n",s1);

    return 0;
}

Sickcat
2011-10-17 20:38
异世妖
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-29
收藏
得分:0 
回复 3楼 鸿飞冥冥
你确定?这个程序对应了我说的这个题?
2011-10-17 20:54
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:3 
程序代码:
#include<stdio.h>
#include<string.h>
int main()

{
    char str1[100],str2[100];
    
    int i;
    printf("请输入一组字符串:\n");
    gets(str2);
    
    for(i=0;i<=strlen(str2);i++)
    {
        str1[i] = str2[i];
        if(str2[i]=='\0' && str2[i+1]!='\0')
             break;
    }
    
    puts(str1);
    return 0;
}


前面少了include<string.h>  现在应该可以了

[ 本帖最后由 ZJQLOVELYY 于 2011-10-17 21:38 编辑 ]
2011-10-17 21:37
一品谋士
Rank: 2
等 级:论坛游民
帖 子:26
专家分:36
注 册:2011-10-16
收藏
得分:3 
3楼正解
2011-10-17 21:55
一品谋士
Rank: 2
等 级:论坛游民
帖 子:26
专家分:36
注 册:2011-10-16
收藏
得分:0 
额 ,是5楼正解,4楼,str1是不必赋值的,循环控制也是正确的,也可以用常用的for(i=0;i<=sizeof(str2)/4.0;i++),不过4楼的方法好理解些
2011-10-17 22:01
鸿飞冥冥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2011-8-14
收藏
得分:0 
不赋值就输出,,不显示乱码才怪

Sickcat
2011-10-18 13:48
异世妖
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-29
收藏
得分:0 
已经解决了,是我歪曲了题意,if语句其实用不到,还有关于烫得问题是因为字符数组以\0结尾,我没有把\0复制到str1中导致的,在strlen(str3)后面加一就好了。。。还是谢谢各位了。。。
2011-10-18 22:56
快速回复:关于复制的问题
数据加载中...
 
   



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

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