返回值好像越界了,为什么?
#include <stdio.h>#define max 100
char *mystyle(char *array, int i);
char *mystyle(char *array, int i)//将接收的数组位置颠倒后返回
{
int k = i - 1;
char *m = &array; //将指针指向array的最末端
printf("%d\n",i)//检验i值是否正确
for(;k > 0;k--)
{
m = *array++;
}
return array;
}
int main(void)
{
char num;
int i;
printf("请输入一个字符串\n");
for(i = 0;(num = getchar()) != '\n';i++)
{
if(i == max - 1) num= '\0';
}
printf("%s\n",mystyle(num,i));
return 0;
} 你这写得太糊了,两个函数都有问题。char *mystyle(char *array, int i)//将接收的数组位置颠倒后返回
{
int k = i - 1;
char *m = &array; //将指针指向array的最末端
printf("%d\n",i)//检验i值是否正确
for(;k > 0;k--)
{
m = *array++;
}
return array;
}
m已经等于array+k了,m早就越界到哪个地方去了
for(i = 0;(num = getchar()) != '\n';i++)
{
if(i == max - 1) num= '\0';
}
所以你做的所有事是在i=99的时候,在num的地方加一个零,没输入99个字符就什么也不干。
先理清思路再来写
给个参考:char *mystyle(char *array, int i)//½«½óêÕμÄêy×éλÖÃμßμ1oó·μ»Ø
{
char *p=array;
char *q=array+i-1;
while (p<q){
char t=*p;
*p++=*q;
*q--=t;
}
return array;
}
int main(void)
{
char num;
memset(num,0xCC,sizeof(num));
printf("Çëêäèëò»¸ö×Ö·û′®\n");
scanf("%s",num);
printf("%s\n",mystyle(num,strlen(num)));
return 0;
}
Croper 发表于 2019-12-13 21:33
你这写得太糊了,两个函数都有问题。
m已经等于array+k了,m早就越界到哪个地方去了
打扰一下,
memset(num,0xCC,sizeof(num));//这里填充0xCC的作用是什么啊?初学者不太懂。{:10_266:} -_-! 不要这句,我测试是否有越界时没删掉留下来的
页:
[1]