| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1080 人关注过本帖
标题:关于字符串反向输出的一个问题,请大家帮忙看看错在哪里,谢谢啦。
只看楼主 加入收藏
system3288
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:140
注 册:2010-10-9
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:8 
关于字符串反向输出的一个问题,请大家帮忙看看错在哪里,谢谢啦。
void FAN(char to[],char from[])
{
    int i=0,j=0,k=0;
    while(from[i]!='\0')
    {
        i++;
    }
    while(j<=i)
    {
        to[j]=from[i];
        j++;
        i--;
    }
}
int _tmain(int argc, _TCHAR* argv[])
{   
    char a[1000]={0};//定义数组
    char b[1000]={0};
    gets(a);//给A中输入字符串
    FAN(b,a);//通过自定义函数将数组A中的字符串反转到B中
    printf("%s\n",b);
    system("pause");
    return 0;
    system("pause");   
        return 0;
}

希望各位在我原有的程序上做修改,并恳请指出错在哪里,谢谢了。
搜索更多相关主题的帖子: 输出 字符 
2010-10-21 19:36
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:2 
最近在做一些题,发现出题人真的是很奇怪,本来用一些库函数能够实现的程序偏要自己去写一个实现的程序,如果是这样的话那别人开发的那些库函数有何用???strrev这个函数不是就能够直接实现吗??

愿用余生致力编程
2010-10-21 19:42
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:4 
应该在while(j<=i)
    {
        to[j]=from[i];
        j++;
        i--;
    }
后一句to[j]='/0';
2010-10-21 20:09
system3288
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:140
注 册:2010-10-9
收藏
得分:0 
回复 2楼 我菜119
大哥呀,那个函数我还没有学,所以不知道有那个函数,还有,我觉得自己先写一些能实现那些函数的功能的题,有助于帮助我们这些初学者理解函数的原理。应该都是一步一个脚印踩过来的吧。。。。要是我有你那水平跟境界,我早就不会问这么菜的问题了。
2010-10-21 20:53
sunmingchun
Rank: 4
来 自:安徽-滁州
等 级:业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
收藏
得分:10 
差点没看出来,我改了,如果还不懂问我,加我QQ也行921700775
#include<stdio.h>
#include<stdlib.h>
void FAN(char to[],char from[])
{
    int i=0,j=0,k=0;
    while(from[i]!='\0')
        i++;
    k=i;// k等于a数组的长度
    i=i-1;//指向最后一个字符,注意不是'\0',你原来的程序指向了'\0',就不执行复制了。
    while(j<k)
        to[j++]=from[i--]; //赋值
    to[j]='\0';//指向'\0'表示该数组结束
        
   
}
int main()// 原来的参数不对的 改为这样也行 int main(int argc,char *argv[]),不些、写参数也行的
{   
    char a[1000]={0};//定义数组,难道a=[1000];不行吗?为什么要赋值呢!
    char b[1000]={0};
    gets(a);//给A中输入字符串
    FAN(b,a);//通过自定义函数将数组A中的字符串反转到B中
    printf("%s\n",b);
        system("pause"); //这个函数你知道有什么作用吗?
    return 0;
   
   
}

2010-10-21 21:46
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
你最后i是字符串结束标志的在数组的位置,之后你把他要开始赋值个另一个数组做第一个 应该是结束标志,所以就相当于这个字符串是空的

清风拂暮(木)
2010-10-21 21:56
stone_yang
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2010-10-16
收藏
得分:4 
以下是引用sunmingchun在2010-10-21 21:46:32的发言:

差点没看出来,我改了,如果还不懂问我,加我QQ也行921700775
#include
#include
void FAN(char to[],char from[])
{
    int i=0,j=0,k=0;
    while(from!='\0')
        i++;
    k=i;// k等于a数组的长度
    i=i-1;//指向最后一个字符,注意不是'\0',你原来的程序指向了'\0',就不执行复制了。
    while(j
void FAN(char to[],char from[])
{
    int i=0,j=0,k=0;
    while(from!='\0')
        i++;
    k=i;// k等于a数组的长度
    k=i-1;//指向最后一个字符,注意不是'\0'
    while(j<k)       to[j++]=from[k--]; //赋值
    to[i]='\0';//指向'\0'表示该数组结束
 }
这就是lz只把后半部分的数据赋值个另一个数组的前半部分。你的思维是采用了一个数组实现,形式上却用了两个数组。这就是出错的原因。

5楼的,完全正确。

[ 本帖最后由 stone_yang 于 2010-10-21 22:22 编辑 ]
2010-10-21 22:10
system3288
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:140
注 册:2010-10-9
收藏
得分:0 
回复 5楼 sunmingchun
谢谢,回答非常正确。嘿嘿。我加你QQ了,记得接受哦。
2010-10-21 23:30
fakeboysll
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-17
收藏
得分:0 
回复 5楼 sunmingchun
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void FAN(char to[],char from[])
{
    int i=0,j=0,k=0;
    i=strlen(from);
    k=i+1;
   
    while(j<k)
        to[j++]=from[i--];
        to[j]='\0';
   
}
int main()
{   
    char a[1000];
    char b[1000];
    gets(a);
    FAN(b,a);
    printf("%s\n",b);
        system("pause");
    return 0;
   
   
}

为什么这样子不行呢?

[ 本帖最后由 fakeboysll 于 2011-11-17 06:54 编辑 ]
2011-11-17 06:53
快速回复:关于字符串反向输出的一个问题,请大家帮忙看看错在哪里,谢谢啦。
数据加载中...
 
   



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

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