| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 734 人关注过本帖
标题:问题请教,字符串处理的问题
只看楼主 加入收藏
星星的故乡
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-10-29
结帖率:50%
收藏
 问题点数:0 回复次数:8 
问题请教,字符串处理的问题
程序代码:
int main()
{
    char s[80];
    int i,j;
    gets(s);
    for(i=j=0;s[i]!='\0';i++)
    {
        if(s[i]!='c')
        {
            s[j]=s[i];
            j++;
        }
        else
        s[j]='\0';

    }
        puts(s);
        return 0;
}该程序的目的是删除字符串s中字母为‘c’的字符,但是运行结果始终多出后面的几个字符(红色标记处),请问如何才能去掉呢,谢谢
abcdfdlfcmmk;caca
abdfdlfmmk;aacaca
Press any key to continue
搜索更多相关主题的帖子: 字符串 
2013-11-24 16:21
星星的故乡
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-10-29
收藏
得分:0 
abcdfdlfcmmk;caca
abdfdlfmmk;aacaca
Press any key to continue
2013-11-24 16:22
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
数组没有用'\0'结尾。

s[j] = '\0';
puts(s);
2013-11-24 20:19
星星的故乡
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-10-29
收藏
得分:0 
int main()
 {
     char s[80];
     int i,j;
     gets(s);
     for(i=j=0;s[i]!='\0';i++)
     {
         if(s[i]!='c')
         {
             s[j]=s[i];
             j++;
         }
         else
         s[j]='\0';
     }
         s[j]='\0';
         puts(s);
         return 0;
 }
增加蓝色部分后OK啦,多谢楼上的大侠,谢谢:)
2013-11-24 22:03
星星的故乡
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-10-29
收藏
得分:0 
请问还有其他更简洁高效的程序可以实现删除c的功能吗,谢谢:)
2013-11-24 22:04
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char s[80];
    int i,j;
    gets(s);
   
    for (i=j=0; s[j]; ++i,++j)
    {
        while ('c' == s[j])
            ++j;
        s[i] = s[j];
    }
    s[i] = s[j];
   
    puts(s);
    return 0;
}

—>〉Sun〈<—
2013-11-24 22:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
可以去掉第一个 s[j]='\0';


[fly]存在即是合理[/fly]
2013-11-24 22:46
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
for(i=j=0;s[i]; i++)
    {
        if (s[i] != 'c') {
            s[j] = s[i];
            ++j;
        }
    }
    s[j]='\0';

—>〉Sun〈<—
2013-11-24 22:51
流年!
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:107
注 册:2013-11-7
收藏
得分:0 
char s[80];
    int i,j;
    gets(s);
   /* for(i=j=0;s[i]!='\0';i++)
    {
        if(s[i]!='c')
        {
            s[j]=s[i];
            j++;
        }
        else
        s[j]='\0';

    }
    s[j]='\0';*/
    //char q[80]={0};
    char*p=strchr(s,'c');
    while(p)
    {
        
        s[p-s]=' ';
        p=strchr(s,'c');
    }
   
        puts(s);
        Sleep(10000);
    return 0;
2013-11-25 10:13
快速回复:问题请教,字符串处理的问题
数据加载中...
 
   



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

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