c语言字符串倒序连接,字符串倒序函数(C语言字符串倒序函数?出错。求教!)

调用定义的函数使主函数中输入的字符串倒序输出

在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';

下面那个也没用指针啊,也是第一个与最后一个,第二个与倒数第二个,。。对换值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值