免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3332 | 回复: 4
打印 上一主题 下一主题

char *loopmove(char *str,int n)要返回str,不知道怎么写? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-16 23:16 |只看该作者 |倒序浏览
char *loopmove(char *str,int n){
         int len=strlen(str);
        int pos=strlen(str)-n;
        char tmp[len+1];//最好不要这样char *tmp=(char *)malloc(len+1);这样还要在function外面free指针,麻烦
        strcpy(tmp,str+pos);
        strcpy(tmp+n,str);
        *(tmp+len)='\0';
        printf("%s\n",tmp);
        str=tmp;
        printf("%s\n",str);
        //return str;//我现在想返回这个值,应该怎么修改?
}



2,

#define MIN(a,b) ((a)<=(b)?(a):(b))
MIN(*p++,c);说这样调用有缺陷,要怎么改进。

[ 本帖最后由 xxldc 于 2007-9-16 23:53 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-17 09:24 |只看该作者
1.  应该就是return str;

2.  我写的例子编译和运行都没问题。
#include <stdio.h>
#define MIN(a,b) ((a)<=(b)?(a)b))

int main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int b=0,c=1;
    int *p = a;
    b = MIN(*p++,c);
    printf("b=%d\n",b);
}

[ 本帖最后由 lemboyz 于 2007-9-17 09:29 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-09-17 09:28 |只看该作者
原帖由 xxldc 于 2007-9-16 23:16 发表
char *loopmove(char *str,int n){
         int len=strlen(str);
        int pos=strlen(str)-n;
        char tmp[len+1];//最好不要这样char *tmp=(char *)malloc(len+1);这样还要在function外面free指针,麻烦
        strcpy(tmp ...


2, 用内联函数

论坛徽章:
0
4 [报告]
发表于 2007-09-17 09:31 |只看该作者
原帖由 xxldc 于 2007-9-16 23:16 发表
char *loopmove(char *str,int n){
         int len=strlen(str);
        int pos=strlen(str)-n;
        char tmp[len+1];//最好不要这样char *tmp=(char *)malloc(len+1);这样还要在function外面free指针,麻烦
        strcpy(tmp ...



str=tmp; ????
不要返回栈中的地址!!! 函数返回后,栈中的数据不再有效

论坛徽章:
0
5 [报告]
发表于 2007-09-17 10:51 |只看该作者
1)
char *loopmove(char *str,int n){
        int len=strlen(str);
        int pos=strlen(str)-n;
        static char tmp[len+1];///////////////

        strcpy(tmp,str+pos);
        strcpy(tmp+n,str);
        *(tmp+len)='\0';
        printf("%s\n",tmp);
        str=tmp;
        printf("%s\n",str);
        return tmp;///////////////
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP