从键盘上输入一个字符串,然后将字符逆序存放后输出,怎么写啊

大哥们帮我问下,从键盘上输入一个字符串,然后将字符逆序存放后输出,怎么写啊?

从键盘上输入一个字符串,然后将字符逆序存放后输出,伙写的是
#include<stdio.h>
#include<string.h>
main()
{
char a[n];int i;int n;char*p=&a[n];
printf("Input data");
for(i=0;i<n;i++)
scanf("%c",&*(p+i));
printf("请输出的数据\n");
for(i=n-1;i>=0;i--)
printf("%c",&*(p+i));
}帮忙纠正啊
最新回答
月亮供电不足

2024-09-05 09:14:08

#include<stdio.h>
#include<string.h>
main()
{
char a[n];int i;int n;char*p=&a[n];这里a[n]中n必须为常量,而且你在下面的式子中没定义n。还有就是如果是char*p=&a[n] 就是指向a[n]数组的第n+1个数而实际你就只有定义了n个数
printf("Input data");
for(i=0;i<n;i++)
scanf("%c",&*(p+i));这里就是p+i就是了不用重复用*跟&,你指针不是很懂
printf("请输出的数据\n");
for(i=n-1;i>=0;i--)
printf("%c",&*(p+i));这里不应该是输出地址,而是出入指针代表的数,也错了。
} 还有就是定义数组最好别用%c输入不然很容易出错。
我的 你看看:
#include<stdio.h>
#include<string.h>
#define N 10
int main(void)
{
char a[N];
int i,n;
char*p=a;
printf("intput n:");
scanf("%d",&n);
getchar();
printf("Input data:");
for(i=0;(*(p+i)=getchar())!='\n';i++);
p[i]='\0';
printf("输出的数据\n");
for(i=n-1;i>=0;i--)
printf("%c",*(p+i));
putchar('\n');
return 0;
}
追问
不行啊,没有结果的啊
追答
没有啊我这里是可以的 你输入了那些字符?
追问
abcdefghij
追答
我数组长度定义为10 你这个要求数组长最少为11 把
#include
#include
#define N 10 中的10改为80把 直接点
追问
不是那个问题吧,这边直接就没有输出啊只是叫你输入,然后就是input data,就完了
追答
那你应该是你问题没表述清楚,看你的式子中有n啊,没输入怎么能用n进行运算?
汗 本来很简单的题目 你偏偏有n又有指针,一个数组就行了啊
#include
#include
#define N 10
int main(void)
{
char a[N];
int i,j;
printf("Input data:");
for(i=0;(a[i]=getchar())!='\n';i++);
a[i]='\0';
printf("输出的数据\n");
for(j=i-1;j>=0;j--)
printf("%c",a[j]);
putchar('\n');
return 0;
}
枫林渡口初相遇

2024-09-05 01:44:48

char a[n]会报错的。。
动态数组不是那么分配的。。
malloc()函数。
char *a = (char*)malloc(sizeof(char)*n);
逆序输出
for(int i = strlen(a);i>0;i--)
{
printf("%c",a[i]);
}

大概可以。。未测试
岁月之沉淀

2024-09-05 09:10:54

最后空格没去掉