|
9鱼币
#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[k]; //将指针指向array的最末端
printf("%d\n",i)//检验i值是否正确
for(;k > 0;k--)
{
m[k] = *array++;
}
return array;
}
int main(void)
{
char num[max];
int i;
printf("请输入一个字符串\n");
for(i = 0;(num[i] = getchar()) != '\n';i++)
{
if(i == max - 1) num[max - 1]= '\0';
}
printf("%s\n",mystyle(num,i));
return 0;
}
你这写得太糊了,两个函数都有问题。 - char *mystyle(char *array, int i)//将接收的数组位置颠倒后返回
- {
- int k = i - 1;
- char *m = &array[k]; //将指针指向array的最末端
- printf("%d\n",i)//检验i值是否正确
- for(;k > 0;k--)
- {
- m[k] = *array++;
- }
-
- return array;
- }
复制代码
m已经等于array+k了,m[k]早就越界到哪个地方去了
- for(i = 0;(num[i] = getchar()) != '\n';i++)
- {
- if(i == max - 1) num[max - 1]= '\0';
- }
复制代码
所以你做的所有事是在i=99的时候,在num[99]的地方加一个零,没输入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[max];
- memset(num,0xCC,sizeof(num));
- printf("Çëêäèëò»¸ö×Ö·û′®\n");
- scanf("%s",num);
- printf("%s\n",mystyle(num,strlen(num)));
- return 0;
- }
复制代码
|
-
最佳答案
查看完整内容
你这写得太糊了,两个函数都有问题。
m已经等于array+k了,m[k]早就越界到哪个地方去了
所以你做的所有事是在i=99的时候,在num[99]的地方加一个零,没输入99个字符就什么也不干。
先理清思路再来写
给个参考:
|