| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1834 人关注过本帖
标题:字符串复制的问题
取消只看楼主 加入收藏
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
收藏
已结贴  问题点数:8 回复次数:8 
字符串复制的问题
问题请看代码红色字部分。程序是两个字符串比较。输出整个比较后的ascll码!,相等就是0。不能用strcmp函数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void input(char *str1, char *str2)
{
    int i;
    for(i=0;i<30;i++)                        //把最先的两个字符串赋初值,每个字符为'0'问题网下面看
    {
        str1[i]='0';
        str2[i]='0';
    }
    printf("请输入第一个字符串\n");
    gets(str1);
    printf("请输入第二个字符串\n");
    gets(str2);
}
void output (char *str1, char *str2)
{

    int i, len, len1, cot1=0,cot2=0;
    len=strlen(str1);
    len1=strlen(str2);
    if(len>len1)
    for(i=0; i<len; i++)
    {
     if(str2[i]!='\0'&&str2[i]!='0')        问题在这里。如果没有str2[i]!=‘0’,只有str2[i]!=‘\0’程序就是错的。为啥会这样。如果最开始我没给初值的的话,字符串str[30]他后面不是都跟的‘\0’吗,然而我验证的结果字串结束后只跟了一个'\0',其它的就不是'\0',所以我给了初值才行。那么字符串后面没有给定值的全部是不是'\0'
     cot1+=(str1[i]-str2[i]);            
     else
     cot2+=str1[i];
    }
    else
    for(i=0; i<len1; i++)
    {
        if(str1[i]!='\0'&&str1[i]!='0')
        cot1+=str1[i]-str2[i];
        else
        cot2-=str2[i];
    }
    printf("比较后的ascll=%d\n",cot1+cot2);

}
int main()
{
    char str1[30], str2[30];
    while(1)
    {
        input(str1, str2);
        output(str1, str2);
    }
    return 0;
}
搜索更多相关主题的帖子: include 字符串 
2017-03-25 16:49
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 2楼 吹水佬
   int i;
    for(i=0; i<30; i++)
    {
        str1[i]='0';
        str2[i]='0';
    }
不是 程序如果不给初值,程序就是错的。你试看
2017-03-25 21:51
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 5楼 wp231957
我开始就是没赋值,直接输入到字符数组str1,str2。比较每个字符的ascll码的时候,短的那个字符串已经是'\0'结束了,后面的ascll码比较就是错的,你自己试试不给值。

一张图是没给初值,一张是给了值的
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
2017-03-25 22:17
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 2楼 吹水佬
不给初值是错的。你看看6楼我传的截图。为啥会这样,我就纳闷了
2017-03-25 22:19
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 8楼 wp231957
一个个比较的。我代码不是这样的?短的判断到'\0'的时候,那一次不进行运算。继续比较,继续会运算
2017-03-25 22:26
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 10楼 wp231957
能否实现一个看看?我不知道哪里比较不对
2017-03-26 00:57
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 13楼 烟雨晨曦
终于有人明白我的意思了。当短的字符串为'\0',再往下进行比较。短的字符串最后就不是'\0'了,是随机值。
你这第一步,第二步是函数调用是什么?不明白。
2017-03-26 01:09
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 12楼 吹水佬
就是每个字符ascll码比较,同strcmp返回值一样,再输出整个字符串的ascll码。
2017-03-26 01:20
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 18楼 吹水佬
这是自己想的。比较出所以ascll不是单个的。而且说了不能用strcmp函数。
2017-03-26 10:02
快速回复:字符串复制的问题
数据加载中...
 
   



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

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