| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:我这程序到底哪里写错了
只看楼主 加入收藏
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:0 
回复 10楼 xzy199999
#include <stdio.h>
#include <string.h>

char *convert(char *dest)
 {
     char *head=dest;
     char *ss=dest;
     static char a[10] = {0};
     char *src = a;   
     while(*dest)
     {
         if(*dest!=':')
         {
             dest++;
         }
         else
        {
             head=dest;
             dest--;
             while((*dest != ':')&&( strcmp(dest , ss) != 0))
             {
                 *src=*dest;
                 src++;
                 dest--;
             }
             dest=head;
             dest++;
         }
     }   
    return a;
 }
 int main()
 {
     char *s="ab:cd";
     printf("%s\n",convert(s));
     return 0;
 }
我运行了下就是我分析的那样,你试试吧
2012-08-27 11:08
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
void reverse_string(char *string, int element)
{
    char *end = string + element - 1;
    while(end > string)
    {
        char pairs[2] = {*string, *end};
        *end = pairs[0];
        *string = pairs[1];
        string++;
        end--;
    }
}

char *reverse(char *string)
{
    char *from = string;
    char *to = string;
    while(1)
    {
        if((*to == ':') || (*to == 0))
        {
            reverse_string(from, to - from);
            from = to + 1;
            if(*to == 0)
                break;
        }
        to++;
    }
    return string;
}
#include <stdio.h>
#include <string.h>

int main()
{
    char buf[64];
    const char *string = "156E:7601:XJHG";
    memset(buf, 0, sizeof(buf));
    memcpy(buf, string, strlen(string));
    printf("源:%s\t目的:%s\n", string, reverse(buf));
}

我是初学者
2012-08-27 11:16
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
朋友的答案是这样

我是初学者
2012-08-27 11:17
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
回复 12楼 xzy199999
是不是加了static后是静态存储区,函数结束后不被销毁?

我是初学者
2012-08-27 11:18
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:0 
回复 14楼 xzy199999
static 修饰的局部变量放在静态区,程序运行就开辟空间,到程序退出时自动释放(不是函数退出),还有就是修饰全局变量或函数时限制其作用域,只能在本文件中使用,就这个作用;
malloc:malloc开辟的空间在堆区,从malloc开辟就存在,但其开辟的空间不会自动释放,除非重启电脑,系统回收,所以最后要用free手动释放,要不就存在内存泄露,如果你在服务器之类的机器上存在内存泄露,服务器不是一直运行的啊,那肯定会蹦的,所以上面我不介意你用malloc,当然他有他的好处,但必须懂的释放

[ 本帖最后由 遗矢的老人 于 2012-8-27 12:00 编辑 ]
2012-08-27 11:58
快速回复:我这程序到底哪里写错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026691 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved