最近在学数组和指针,老师让我们输入一串字符串并使其反向储存,我编写了如下代码但是报错了,请问我应该怎么做,我错在哪?
#include<stdio.h>
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=*a[b];
n++;
b--;
}
b=0;
while(*a[b]!='\0')
{
*a[b]=m[b];
b++;
}
}
void main()
{
int i=0,b,k;
char s[100],*str1[100];
scanf("%s",&s);
while(s[i]!='\0')
{
str1[i]=&s[i];
i++;
}
zhuan(str1,i);
for(k=0;k!=0;k++)
printf("%c",*str1[k]);
}
a[b];
这一句有问题,数组这么写已经是具体的数值了
再加上就不知道是什么东西了
#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}
void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);
while(s[i]!='\0')
{
str1[i]=s[i];
i++;
}
i--;
zhuan(str1,i);
for(k=0;str1[k]!='\0';k++)
printf("%c",str1[k]);
}
你不会使用指针吧。。
代码里面这些用法都是问题的 *a[b]
这么一个数组, char *a,
要取第b个元素,要么就是 a[b], 要么就是 *(a+b)
没有这种用法 *a[b] 的,除非你是指针数组,但事实上不是,就算是也不建议这样下标和指针混用。
#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}
void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);