调用定义的函数使主函数中输入的字符串倒序输出
在for循环里用函数(不同的语言有不同的函数)读出字符串的每一个字符,然后输出来就是了.
C语言字符串倒序函数?出错。求教!
不是那个问题。
问题是,在函数my_strrev里你只有字串s的首地址,但却没有字串s的使用权。s是系统自己分配的一个内存空间,而不是你定义的内存空间,所以不能进行修改。
把string声明成为数组,或者是如下的程序都可以完成这个功能。
#include
#include
#include "malloc.h"
char *my_strrev(char *s);
int main(int argc, char* argv[])
{
// char *string = "This is a good day today";
char *string = (char*) malloc(sizeof("This is a good day today"));
strcpy(string,"This is a good day today");
char *ll=my_strrev(string);
printf("%s",ll);
free(string);
return 0;
}
char* my_strrev( char* s)
{
char *left, *right, ch;
left = right = s;
while( *right++ != '\0');
right -= 2;
while( left{
ch = *left;
*left = *right;
*right = ch;
++left; --right;
}
return s;
}
C语言写用一个函数实现字符串数组的倒序输出,返回字符串?下面是我写的程序
你犯了两个错误.
1.b的生命周期只是output函数,当运行到printf的时候,b的内存已经被系统回收了,所以p指向地的一块无效的内存.
2.b应该被初始化.申请b的时候,它里面的内容不确定,而printf会逐个输出字符直到遇到结束符'\0'.
我修改后是这样的.
#include "stdio.h"
#include "string.h"
char *output(char name[]);
main()
{
char name[20];
scanf("%s",name);
printf("%s\n",output(name));
}
char *output(char name[])
{
int i,n;
char *p;
char *b = new char[20];//把b的内存放到堆上去,它的生命周期就全局了.
memset(b, 0, 20);//初始化.
n=strlen(name);
for(i=0;ib[i]=name[n-1-i];
p=b;
return p;
}
c语言?子函数实现字符串倒序?主函数打印
用tmp[]数组前先对它格式化,即
int k;
for(k=0;k<10,k++)
tmp[k]='\0';
下面那个也没用指针啊,也是第一个与最后一个,第二个与倒数第二个,。。对换值