C语言。输入一个字符串按反方向存放,并将其输出。怎样编写这个程序?

刚学C于语言,答案不会很复杂的、

突发奇想,用堆栈和管道似乎解决这个问题更简单有效,而且不用考虑字符串长度:

#include <fcntl.h>
#include <io.h>
#include <memory.h>
#include <stdio.h>
#include <string.h>
#define szSTR 256

/*递归方式逆序存储字符串,将逆序内容写入fw底层流文件*/
void rev(char * src, int fw)
{
if (!src || fw < 1) return ;
if (!*src) return ; /*如果字符串结束则返回*/
rev(src + 1, fw); /*递归到下一个字符地址*/
write(fw, src, 1); /*递归返回后将字符写入管道*/
}

/*反向函数,输入src,输出des*/
void strv(char * src, char * des)
{
int p[2] = {0, 0}; /*创建一对管道用于读写*/
_pipe(p, _O_BINARY, szSTR);
rev(src, p[1]); /*将输入内容反方向写入管道*/
close(p[1]);/*关闭管道*/
char * s = des; /*将管道内容输出到目标字符串*/
while(!eof(p[0])) {
read(p[0], s++, 1);
}
*s = 0; /*字符串结束标志写入*/
close(p[0]);/*关闭管道*/
}

int main(void)
{
char a[szSTR], b[szSTR];
do {
printf("请输入一个字符串,输入exit结束.\n");
scanf("%s", a);
strv(a, b);
printf("反向存储:[%s]\n", b);
}while(!strstr(a, "exit"));
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-23
#include<stdio.h>
#include<string.h>
int main(void){
int i;
int x;
char nArr[100];//可以自己定义数组的大小;
scanf("%s",nArr);//输入字符串
x=strlen(nArr);//找出字符串长度

for(i=x;i>=0;i--){
printf("%c",nArr[i]);//倒序输出字符串
}
return 0;
}本回答被提问者采纳
第2个回答  2010-06-07
scanf("s",a);
n=strlen(a);
for(i=n-1;i>=0;i--)
printf("%c",a[i]);
第3个回答  2010-06-07
将输入的字符串放进数组里,然后将数组内的内容从后到前依次输出!
相似回答