问题 - 要使用指针反转字符串, 但是我的代码而不是打印反向字符串,正在打印字符串的第一个字母。
#include<stdio.h>
int main()
{
int i;
char n[100];
char *ptr;
ptr = n;
char a[100];
char *sptr;
sptr = a;
scanf("%s", n);
for(i=0;n[i]!=0;i++)//Calculating the size of the string
for(;(*sptr=*(ptr+i))!='\0';sptr++,ptr--)
{
;
}
printf("%s",a);
return 0;
}
答案 0 :(得分:1)
你的问题是双重的。
首先,您在第一个;
循环后错过for
。
for(i=0;n[i]!=0;i++); //note the ;
其次,您使用的数组索引是越界
for(;(*sptr=*(ptr+i))!='\0';sptr++,ptr--)
在使用之前,您需要减少i
次。
你应该写
for(;(*sptr=*(ptr+i-1))!='\0';sptr++,ptr--)
注意:恕我直言,你做一件简单的事情太复杂了。想一个更简单的逻辑。有许多。对于 live 示例,请按照WhozCraig先生的评论中的链接进行操作。