| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:关于指针覆盖前移
只看楼主 加入收藏
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
结帖率:96%
收藏
已结贴  问题点数:15 回复次数:5 
关于指针覆盖前移
写了一个代码,把2个字符串数组做比较,把重复的去掉,用指针前移和覆盖的方法,可是输出却是乱码,请问这是什么原因呢?
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
    char *p,*q,*str[10];
    str[0]="我是字符串";
    str[2]="字符";
    p=str[0];
    q=str[2];
    while(*p++==*q)     //判断第一个字符串数组里的元素是否等于第二个字符串数组里的元素
    {
        *p=*p++;            //覆盖
        p--;                 //指针前移
        q++;             //第二个字符串数组指针后移,下次判断
    }
    str[2]=p;
    printf("%s\n",str[2]);
    system("pause");
}



[ 本帖最后由 yudeyinji198 于 2012-12-18 10:13 编辑 ]
搜索更多相关主题的帖子: color 字符串 
2012-12-18 10:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:8 
加'\0' 了没

DO IT YOURSELF !
2012-12-18 10:30
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 2楼 wp231957
没加,不过我在while循环结束后加了 *q='\0'; 后输出是空的!
还是我加错了?
2012-12-18 10:37
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你要用谁覆盖谁啊  代码逻辑没看懂呢

DO IT YOURSELF !
2012-12-18 10:41
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
回复 4楼 wp231957
用同一个字符串里面的后一个元素覆盖前一个元素。
*p=*p++;            //覆盖
改为*p=*(p+1);
2012-12-18 10:43
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:8 
个人觉得两个问题:
1 。看你系统是否很好支持中文,换成英文试一下,应该不是乱码。
2.  逻辑有问题,你这样实际上只是第一次移动了一个位置,其余都没变样~ ~
2012-12-18 10:57
快速回复:关于指针覆盖前移
数据加载中...
 
   



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

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