| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:删除尾部星号,输出为乱码,怎么回事?
只看楼主 加入收藏
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
结帖率:11.11%
收藏
 问题点数:0 回复次数:5 
删除尾部星号,输出为乱码,怎么回事?
#include <stdio.h>
void main()
{
    void can(char *p);
    char s[100];
    printf("输入一段含星号的字符串:\n");
    gets(s);
    can(s);
}
void can(char *p)
{
    int j=0,i=0,m=0;
    char t[100];
    while(p[i]!='\0')
    {
        i++;
    }
    for(j=0;j<i;j++)
    {
        if(p[j]!='*'&&p[j++]!='*')
        {
            t[j]=p[m];
            m++;
        }
    }

    t[j]='\0';
    printf("输出新字符串:%s\n",t);

}
搜索更多相关主题的帖子: 字符串 include 
2014-07-19 23:26
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:0 
p 是一个指针 不是字符串
p[i]显然错了

t[j]=p[m];
m,j位置放反了

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-07-20 01:07
NBABOY
Rank: 4
等 级:业余侠客
威 望:4
帖 子:129
专家分:281
注 册:2013-5-2
收藏
得分:0 
首先我要说楼上的你的基本功真烂啊呢!楼主不要听他乱说你没有错的。
#include <stdio.h>
void main()
{
    void can(char *p);
    char s[100];
    printf("输入一段含星号的字符串:\n");
    gets(s);
    can(s);
}
void can(char *p)
{
    int j=0,i=0,m=0;
    char t[100];
    while(p[i]!='\0')
    {
        i++;
    }
    for(j=0;j<i;j++)
    {
        if(p[j]!='*'&&p[j++]!='*')//错误代码11
        {
            t[j]=p[m];//错误代码22
            m++;
        }
    }

    t[j]='\0';
    printf("输出新字符串:%s\n",t);

}
你应该有这样一个思想。找到型号的索引下标。后面的字符依次前移覆盖信号。
2014-07-20 01:51
lrcdddd
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2014-7-3
收藏
得分:0 
#include <stdio.h>
void main()
{
    void can(char *p);
    char s[100];
    printf("输入一段含星号的字符串:\n");
    gets(s);
    can(s);
    printf("输出新字符串:%s\n",s);
}
void can(char *p)
{
    while(*p)
    {
        p++;
    }
    p-- ;
    while(*p == '*')
    {
        p-- ;
    }
    p++;
    *p = '\0';
}
参照以前的贴子,重新修改一下,通过!!!!!
2014-07-20 08:44
q1980469235
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2014-1-4
收藏
得分:0 
#include <stdio.h>
void main()
{
    void can(char *p);
    char s[100];
    printf("输入一段含星号的字符串:\n");
    gets(s);
    can(s);
}
void can(char *p)
{
    int j=0,i=0,m=0;
    char t[100];
    while(p[i]!='\0')
    {
        i++;
    }
    for(j=0;j<i;j++)
    {
        if(p[j]!='*')
        {
            t[m]=p[j];
            m++;
        }
    }

    t[m]='\0';
    printf("输出新字符串:%s\n",t);

}
2014-07-21 00:12
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
#include <stdio.h>
void main()
{
    void can(char *p);
    char s[100];
    printf("输入一段含星号的字符串:\n");
    gets(s);
    can(s);
}
void can(char *p)
{
    int j=0,i=0,m=0;
    char t[100];
    for(j=0;(p[j]!='*')&&(p[j]!='\0');j++)
    {
        
            t[m]=p[j];
            m++;
   
    }

    t[m]='\0';
    printf("输出新字符串:%s\n",t);

}
2014-07-21 09:41
快速回复:删除尾部星号,输出为乱码,怎么回事?
数据加载中...
 
   



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

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