突发奇想,用堆栈和管道似乎解决源友稿这个问题更简单有效,而且不用考虑字符串长度:
#include
#include
#include
#include
#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;
}
#include
#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;
}
scanf("s"慧宴,a);
n=strlen(a);
for(i=n-1;i>如知=0;i--)
printf("%c"前橡银,a[i]);
将输入的字符串放进数组里,然后将数组内的内容从后到前依次输出!