关于c语言,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>#include<string.h>intmain(){voidoppose(charstring[][1]);inti;charstr...
#include<stdio.h>
#include<string.h>
int main()
{
void oppose(char string[][1]);
int i;
char str[20][1];
printf("please enter a string:\n");
for(i=0;i<=19;i++)
gets(str[i]);
oppose(str);
for(i=0;i<=19;i++)
/*{
if((c=str[i])!='\0')*/
puts(str[i]);
//}
return 0;
}
void oppose(char string[20][1])
{
int i,k=0;
char c[20][1];
if((string[i]!='\0'))
k++;
for(i=0;i<=k/2;i++)
{
strcpy(c[i],string[i]);
strcpy(string[i],string[k-1-i]);
strcpy(string[k-i-i],c[i]);
}
}
为什么我输入完字符后,按回车,没有得到预期的效果。 展开
#include<string.h>
int main()
{
void oppose(char string[][1]);
int i;
char str[20][1];
printf("please enter a string:\n");
for(i=0;i<=19;i++)
gets(str[i]);
oppose(str);
for(i=0;i<=19;i++)
/*{
if((c=str[i])!='\0')*/
puts(str[i]);
//}
return 0;
}
void oppose(char string[20][1])
{
int i,k=0;
char c[20][1];
if((string[i]!='\0'))
k++;
for(i=0;i<=k/2;i++)
{
strcpy(c[i],string[i]);
strcpy(string[i],string[k-1-i]);
strcpy(string[k-i-i],c[i]);
}
}
为什么我输入完字符后,按回车,没有得到预期的效果。 展开
3个回答
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
void oppose(char string[]);//
//int i;
char str[20];//
printf("please enter a string:\n");
//for(i=0;i<=19;i++)
gets(str);//
oppose(str);
//for(i=0;i<=19;i++)
puts(str);//
return 0;
}
void oppose(char string[20])
{
char *p=string,*q=string+strlen(string)-1,t;
while(p<q)
{
t=*p;
*p=*q;
*q=t;
p++;
q--;
}
}
更多追问追答
追问
表示菜鸟子函数没懂
追答
利用指针进行首位交换
展开全部
void revert(char *p)
{
for (int i = 0; i < strlen(p) / 2; i++) {
char temp = *(p + i);
*(p + i) = *(p +(strlen(p) - 1 - i));
*(p +(strlen(p) -1 -i)) = temp;
}
printf("%s\n",p);
}
不需要那么多
{
for (int i = 0; i < strlen(p) / 2; i++) {
char temp = *(p + i);
*(p + i) = *(p +(strlen(p) - 1 - i));
*(p +(strlen(p) -1 -i)) = temp;
}
printf("%s\n",p);
}
不需要那么多
追问
还没学到指针,希望可以就我写的修改一下可以吗,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的子函数里的i没有赋初值就拿来用了。
嗯,应该就是这问题。
嗯,应该就是这问题。
追问
改了,还是没用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询