#include
#include
#include
void Nx(char p,int n)
{
int i;
char s[20];
for(i=0;i<n;i++)
{
s[i]=(p+n-i-1);
}
printf("%s",s);
}
int main()
{
char a[20],*p;
int n;
printf("输入字符串\n");
scanf("%s",&a);
n=strlen(a);
p=a;
Nx(p,n);
return 0;
system("pause");
}
这个错在哪里了呀
s[i]=(p+n-i-1);这一组在进行计算的时候返回的是int类型,但是你却用char类型接收,所以需要强转为char
char s[20]; 这一句有问题,你见过这种格式的语法吗?这个是语法问题
printf("%s",s);这个方法没定义
#include
#include
void Nx(char* p,int n)
{
int i;
char s[n];
for(i=0;i<n;i++)
{
s[i]=(p[n-i-1]);
}
printf("%s",s);
}
int main()
{
char a[20],*p;
int n;
printf("输入字符串\n");
scanf("%s",&a);
n=strlen(a);
p=a;
Nx(p,n);
return 0;
}
//问题有点多
修改后的代码如下,修改处请看注释:
void Nx(char* p, int n) //函数第一个形参类型应该为char*
{
int i;
char s[20];
for (i = 0; i < n; i++)
{
s[i] = *(p + n - i - 1); // (p + n - i - 1)是地址,需要加*,取得该地址代表的字符。
}
s[i] = '\0'; //加上字符串结尾字符,否则s数组未赋值的元素会乱码。
printf("%s", s);
}
int main()
{
char a[20], *p;
int n;
printf("输入字符串\n");
scanf("%s", a); //a定义为字符数组,数组名a已经是地址了,不用再加&
n = strlen(a);
p = a;
Nx(p, n);
return 0;
system("pause");
}
该程序的功能是将输入字符串倒序输出。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!