c语言菜鸟求大神解答下 感激不尽

编写函数voidrevstr(char*str),其功能是把字符串str反序。例如字符串str为”abcde”时,则处理后为”edcba”,要求:在main()函数中初始... 编写函数void revstr (char *str),其功能是把字符串str反序。例如字符串str为”abcde”时,则处理后为”edcba”, 要求:在main()函数中初始化字符串str并输出原字符串str,调用函数后在主函数中输出处理后的新字符串str。要求:不允许使用字符串库函数。
#include<stdio.h>int i;len(char str[]){ i=0; do { i++; } while(str[i]!='\0'); return i;}void revstr(char str[]){ int n=len(str); char strnew[100]; int j=0; for(i=n;i>=0;i--) { strnew[j]=str[i]; j++; } for(i=0;i<=j;i++) str[i]=strnew[i];}main(){ char str[]="shdfjsdh"; puts(str); revstr(str); puts(str);}求大神帮忙看下这个函数为什么输出不了反串的字符串啊
展开
 我来答
百度网友6fe74e2
2014-01-03 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:260万
展开全部

你最好自己去下个vc之类的IDE

写出来的代码要多去调试,不然不会有多大提高

#include<stdio.h>
//全局变量不要乱用,会在不同函数中有影响 int i;
int len(char str[]) //少了返回值类型
{
int i=0; //用局部变量就可以了i=0; 
do{
i++; 
    } while(str[i]!='\0');
return i;
}
void revstr(char str[])
{
int n=len(str);
char strnew[100]; 
int i=0;   //用局部变量
int j=0;
for(i=n-1;i>=0;i--)  //起始变量错误 n是str的长度,最后一个字符应该是str[n-1]
{
strnew[j]=str[i];
j++;
    }
for(i=0;i<j;i++)  // i<=j
str[i]=strnew[i];
}
int main()
{
char str[]="shdfjsdh";
puts(str); 
revstr(str); 
puts(str);
}

素笔描靑花
2014-01-03 · 超过18用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:25.8万
展开全部
char * fun_inverse(char *str) {
char *p = str;
char *q = str;
char tmp;
while ( *q != '\0' ) {
q++;
}
q--;
for (; p!=q; p++; q--) {
tmp = *p;
*p = *q;
*q = tmp;
}
return str;
}

int main(int argc, char *argv[])
{
char str[20] = "abcde";
fun_inverse(str);
printf("output the new string:\n");
puts(str);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式