| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:删除字符串中的某种字符的函数!
只看楼主 加入收藏
wjfko
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2012-2-19
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
删除字符串中的某种字符的函数!
编写一个函数string_cut(char str[],char c),其功能是删除字符串中所有的字符变量c,例如
   char str="abaca";char c='a';
   则执行string_cut(str,c)后,str的内容变为"bc"。

我的代码如下:

#include <stdio.h>
#include <string.h>
void string_cut(char str[],char c)
{
    int i,j;
    char str2[20];
    for(i=0,j=0;str[j]!='\0';i++,j++)
    {
        if(str[j]!=c)str2[i]=str[j];
        else {j++;str2[i]=str[j];}
    }
    str2[i]='\0';
    puts(str2);
}
void main()
{
    char str[20],c;
    gets_s(str);
    scanf_s("%c",&c);
    string_cut(str,c);
}

不知道问题出在哪里,反正是没有正确的删除。
如果在主函数里面给变量c初始化就可以删除了,但是调试的时候也很慢,而且我没有超过20个字符居然也报错!

希望帮忙指正,谢谢!
搜索更多相关主题的帖子: 函数 void 字符串 
2012-02-27 15:59
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:0 
呵呵,如下:

void string_cut(char str[], char c)
{
     int i = 0, j = 0;
     char str2[20];

     i = 0;
     j = 0;
     while(str[j] != '\0')
     {
          if(str[j]!=c)
          {
               str2[i] = str[j];
               i++;
          }

          j++;
     }

     str2[i] = '\0';

     puts(str2);
}
2012-02-27 16:08
wjfko
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2012-2-19
收藏
得分:0 
2楼的朋友,用了你的方法,还是没有效果!
2012-02-27 16:19
missu_1314
Rank: 2
等 级:论坛游民
帖 子:46
专家分:98
注 册:2010-9-8
收藏
得分:20 
以下是引用wjfko在2012-2-27 15:59:41的发言:

编写一个函数string_cut(char str[],char c),其功能是删除字符串中所有的字符变量c,例如
   char str="abaca";char c='a';
   则执行string_cut(str,c)后,str的内容变为"bc"。

我的代码如下:

#include
#include
void string_cut(char str[],char c)
{
    int i,j;
    char str2[20];
    for(i=0,j=0;str[j]!='\0';i++,j++)    //连续两个 字符串都++, 有问题吧? 比如str[1]到str[10]都没问题,str[11]要删除,那不是下面第一个放入str2中的会是str2[11]   
   {
        if(str[j]!=c)str2=str[j];
        else {j++;str2=str[j];}            //这里如果连续两个字母都是相同的话那第一个会跳过不放入str2中,第2个就会放入str2字串中了吧
    }
    str2='\0';
    puts(str2);
}
void main()
{
    char str[20],c;
    gets_s(str);                             // gets_s是什么函数?
    scanf_s("%c",&c);                       //scanf_s 是什么函数?
    string_cut(str,c);
}

不知道问题出在哪里,反正是没有正确的删除。
如果在主函数里面给变量c初始化就可以删除了,但是调试的时候也很慢,而且我没有超过20个字符居然也报错!

希望帮忙指正,谢谢!






#include<stdio.h>
#include<string.h>


void String_Cut(char str[], char c)
{

 int i, j=0;
 char str2[256];
 int len = strlen(str);
 for(i=0; i<len; i++)
 {
  if (str[i] != c)
  {
   str2[j] = str[i];
   j++;
  }
 }
  str2[j] = '\0';
  puts(str2);
}




main()
{
  char str[256];
  char c;

  printf("please input a string:\n");
  gets(str);
  printf("please input a char that you want to delete:\n");
  c = getchar();
  String_Cut(str, c);
  getch();
}





收到的鲜花
  • wjfko2012-02-27 17:34 送鲜花  3朵   附言:我很赞同
2012-02-27 17:03
wjfko
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2012-2-19
收藏
得分:0 
gets_s和scanf_s是Microsoft Visual Studio 2010中的新的函数名,就是gets和scanf,只是更加安全了。
2012-02-27 17:21
快速回复:删除字符串中的某种字符的函数!
数据加载中...
 
   



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

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