反序输出从键盘输入的字符串
#include<stdio.h>
int i;
main()
{void reverseorder(char *p);//定义反序函数
char a[20];
for(i=0;a[i]!='\0';i++)
a[i]=getchar();//输入字符串
printf("%s",a);
reverseorder(a);
printf("%s",a);
}
void reverseorder(char *p)
{int j;
i--;
char t;
for(j=0;j<=i;j++,i--)
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
为什么输入之后没有输出?
[解决办法]
- C/C++ code
#include<stdio.h>#include<Windows.h>void reverseorder(char *p);//定义反序函数void main(){ char a[20] = {0}; //不考虑溢出情况 scanf("%s", a); reverseorder(a); printf("%s",a);}void reverseorder(char *p){ int len = strlen(p); for (int i = 0; i != strlen(p)/2; ++i,--len) { p[i] = p[i] ^ p[len-1]; p[len-1] = p[i] ^ p[len-1]; p[i] = p[i] ^ p[len-1]; } }
[解决办法]
你是通过什么把'\0'输入到终端,然后再到字符数组中的呢。不知道你是如何输入的,如果输入正确你的第一个printf应该能够打印出你输入的内容,否则就是没有从输入循环中跳出来。
for(i=0;a[i]!='\0';i++)
a[i]=getchar();//输入字符串
你可以改成这样:for (i = 0; a[i] != '\n'; i++)
a[i] = getchar();
a[i] = '\0'; /*字符串结束符*/
如果你的第一个printf能够正确打印,那么就不应该有问题。你的交换是没有问题的。
[解决办法]
如需要阅读该回复,请登录或注册CSDN!