#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void strrev1(char *str);
void main()
{
char *str;//你之前没有给str分配合适的内存单元指向,所以输入的时候字符串没有地方放置
str = (char*)malloc(sizeof(char)*30);//这个是动态分配内存,这个最多只能输入30个字符~~~
printf("input str:");
scanf("%s",str);//这里str就是首地址,不需要加&取址符
//最简单的事把上面都替换成以下
//char str[5]="hello";
strrev1(str);//字符串反转函数
printf("%s\n",str);//输出的时候也是一样的,给它首地址,它会自动往下输出下一个字符,直到遇见‘\0’
}
void strrev1(char *str)//调用函数的时候,传的是首地址,函数体内加*后就是直接操作字符串了,不需要使用返回地址了,而且你返回的不是首地址
{
char ch;
char *end;
int len;
len=strlen(str);
end=str+len-1;//end获取最后一个地址,因为是从0开始的
while (str<end)
{
ch=*str;//ch中间变量
*str++=*end;
*end--=ch;
}
}
不知道这是不是楼主需要的哦(测试木有问题~~~)
#include<string.h>
#include<stdlib.h>
void strrev1(char *str);
void main()
{
char *str;//你之前没有给str分配合适的内存单元指向,所以输入的时候字符串没有地方放置
str = (char*)malloc(sizeof(char)*30);//这个是动态分配内存,这个最多只能输入30个字符~~~
printf("input str:");
scanf("%s",str);//这里str就是首地址,不需要加&取址符
//最简单的事把上面都替换成以下
//char str[5]="hello";
strrev1(str);//字符串反转函数
printf("%s\n",str);//输出的时候也是一样的,给它首地址,它会自动往下输出下一个字符,直到遇见‘\0’
}
void strrev1(char *str)//调用函数的时候,传的是首地址,函数体内加*后就是直接操作字符串了,不需要使用返回地址了,而且你返回的不是首地址
{
char ch;
char *end;
int len;
len=strlen(str);
end=str+len-1;//end获取最后一个地址,因为是从0开始的
while (str<end)
{
ch=*str;//ch中间变量
*str++=*end;
*end--=ch;
}
}
不知道这是不是楼主需要的哦(测试木有问题~~~)