| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2260 人关注过本帖
标题:快疯了,使输入字符串反序
只看楼主 加入收藏
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:8 
快疯了,使输入字符串反序
为什么程序一直出错,我的想法是,用指针标记输入字符串的尾巴,然后按顺序指向字符串开头。然后返回指针,输出指针的值的话就是倒序了。

程序代码:
#include<stdio.h>
char* test(char*);
int main(void)
{   char*bingo;
    char line[30];
    puts("Enter strings");
    gets(line);
    bingo=test(line);
    puts(bingo);
    
    
}
#include<string.h>
char* test(char*ptr)
{
    int i,j;
    char *find;
    for(i=strlen(ptr);i>=0;i--)//求出ptr的长度,然后利用指针,从尾巴指向头部,然后返回指针值、
        {
        find=ptr[i];
        find++;
        }
        return find-strlen(ptr);
}
搜索更多相关主题的帖子: bingo Enter 字符串 
2014-09-23 15:14
muyoucumian
Rank: 3Rank: 3
等 级:等待验证会员
帖 子:80
专家分:126
注 册:2014-8-30
收藏
得分:4 
1.手动为栈开辟一个空间用来存储将要输入的字符串。
2.输入1个字符,检测到键盘的某个键被按下,系统自动调用int19h中断,将输入的字符的扫描码和ASCII码送入缓冲区。自己手动调用int16h中断,将缓冲区的字符扫描码和ASCII码取出来,并将ASCII码入栈。
3.重复过程2。直到发现从缓冲区取出来的字符扫描码是ENTER的扫描码。
4.将栈中的所有字符依次出栈,出到某个内存段可以保存起来,出到显示缓冲区可以显示在屏幕上。
2014-09-23 15:40
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
思路就是错的!
puts函数的入参是字符串指针,说白了就是地址,你传入一个地址就打印那里的字符串,你觉得两次传入同样一个地址,就会一次正序一次反序吗?

总有那身价贱的人给作业贴回复完整的代码
2014-09-23 16:01
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:4 
画个图,控制的时候别太着急,呵呵

梦想拥有一台龙芯3A-4000
2014-09-23 17:49
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 3 楼 embed_xuel
为什么我的思路是错的。
假如我输入BOY这个字符串到数组N[4]里面
B对应N[0],O对应N[1],Y对面N[2],然后空字符\0存储在N[3]。
我再创建一个指针find。find[0]指向Y,find[1]指向O,find[2]指向B,然后把空字符\0带入find[3]。
我再按顺序输出find不就行了吗
2014-09-23 19:51
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:4 
简单说说:
就说一点:对于字符数组(指针)来说,一个子函数里面的临时变量不要反回来,返回来也不要使用
2014-09-23 19:59
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 6 楼 erty1001
能具体说说吗,我的思路难道错了吗
2014-09-23 22:48
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:4 
#include<stdio.h>
#include<string.h>
int main ()
{
    int fanxu_input(char *p);
    char a[50];
  
    printf("please input the string:\n");
    scanf("%s",a);
   
    fanxu_input(a);
   
    return 0;
}

int fanxu_input(char *p){
    char *e,*b;
    b=p;
    while(*p!='\0')
    p=p+1;
    p=p-1;
    e=p;
    for(;p>=b;p--){
          printf("%c ",*p);
          }
          return 0;
}
2014-09-23 23:09
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:4 
回复 5 楼 ctl184762651
你这边大体思想没错,但有个问题,指针变量(如 char *p )只是储存了一个地址,而 p[0] 代表 p 所存储地址的数据,如果没有向操作系统申请这块内存的话是无权使用的(操作系统一个重要的功能就是资源管理)。

而且相较于你的思路,你的代码很混乱,有些地方你还没理解清楚啊


莫问前尘有愧,但求今生无悔
2014-09-24 10:36
快速回复:快疯了,使输入字符串反序
数据加载中...
 
   



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

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