标题:求助:在DOS环境下用C语言输入一个最长258个字符字符串,实现字符串倒转输出 ...
只看楼主
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
结帖率:0
已结贴  问题点数:20 回复次数:10 
求助:在DOS环境下用C语言输入一个最长258个字符字符串,实现字符串倒转输出
我写的源程序如下:
#include<stdio.h>
#include<string.h>
void main()
{
    char s[258],c;
    pringtf("Please input a string (max 257 characters)\n");
    gets(s);
    int j=strlen(s)-1,i=0;
    while(i<j)
    {
       c=s[i];
       s[i]=s[j];
       s[j]=c;
       i++;
       j--;
    }
    puts(s);
}
但是用BC最多gets()只能输入127个字符  我想用getch()但弄了好几天都没弄好  我是一个初学者麻烦哪位高手能给一个帮忙解决一下  
最好能给出源程序  感激不尽
搜索更多相关主题的帖子: C语言 DOS 字符 环境 倒转 
2010-10-09 09:20
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:6 
你先自己改以下啊!用getch()的版本?有问题的也发上来啊!!

顺便说一下,我在windows版GCC下试了下 gets最多读入的字符串长度为4094 完全可以满足要求!!

[ 本帖最后由 jack10141 于 2010-10-9 09:53 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-10-09 09:30
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
得分:0 
回复 2楼 jack10141

#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
    char s[258],c; int i;
    pringtf("Please input a string (max 258 characters)\n");   
    for(i=0;i<257;i++)
    {
        getch();
        s[i]=getch();
    }
    int j=strlen(s)-1;i=0;
    while(i<j)
    {
       c=s[i];
       s[i]=s[j];
       s[j]=c;
       i++;
       j--;
    }
    puts(s);
}
这个在BC下运行无法输入
2010-10-09 09:54
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:6 
#include<stdio.h>
#include<string.h>
void main()
{
    char s[258],c;
    printf("Please input a string (max 257 characters)\n");
    gets(s);
    strrev( s );   
    puts(s);
}

愿用余生致力编程
2010-10-09 09:57
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
以下是引用lei1986在2010-10-9 09:54:15的发言:


#include
#include
#include
void main()
{
    char s[258],c; int i;
    pringtf("Please input a string (max 258 characters)\n");   
    for(i=0;i<257;i++)
    {
        getch();
        s=getch();
    }
    int j=strlen(s)-1;i=0;
    while(i
这个循环    for(i=0;i<257;i++)  中为什么要写 getch()  而不是getchar()?   为什么要写两个而不是一个???

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-10-09 09:57
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
得分:0 
回复 4楼 我菜119
谢谢 提醒  又学到一个函数了
2010-10-09 10:00
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:6 
程序代码:
#include<stdio.h>
#include<malloc.h>
void reverse(const char *s)
{
    if(s[0])
    {
        reverse(&s[1]);
    }
    putchar(s[0]);
}
int main()
{
    char *str=(char *)malloc(sizeof(char)*258);
    scanf("%s",str);
    reverse(str);
    free(str);
    return 0;
}
2010-10-09 10:14
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
得分:0 
回复 7楼 Devil_W
你这个也是不行  在BC下连续只能输入127位
2010-10-09 11:38
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
得分:0 
回复 5楼 jack10141
都不行
2010-10-09 11:38
lei1986
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-9
得分:0 
回复 7楼 Devil_W
能给个用getch()输入的程序吗?
2010-10-09 11:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322312-1-1.html




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

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