问题-要使用指针反转字符串,
但是我的代码不是打印反向字符串,而是打印字符串的第一个字母。
#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;
}
最佳答案
您的问题是双重的。
首先,在第一个;
循环之后您缺少了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--)
注意:恕我直言,您使简单的事情变得过于复杂。想一想更简单的逻辑。有许多。有关实时示例,请遵循WhozCraig先生的评论中的链接。