【问题标题】:remove characters from string without using string.h library不使用 string.h 库从字符串中删除字符
【发布时间】:2014-11-10 05:56:31
【问题描述】:

我正在做一个作业,它要求在不使用 string.h 库的情况下从字符串中删除一些字符,这是我的代码:

 int deleteFunc(char chara[100], char a)
{
    int i ;
    for ( i = 0 ; i < 100; i++)
      if (a == chara[i])
       return TRUE;
   else return FALSE;
}

虽然我的 deleteFunc 有一些问题,但我不知道如何解决,任何人都可以提供帮助。谢谢!

【问题讨论】:

  • 你知道如何在不使用strcpy的情况下复制字符串吗?那你也知道怎么解决了。
  • 在题中简述你的问题
  • 你的意思是像这样的 strcpy(string, pointer);但这需要 string.h 函数
  • 实现自己的strcpy 函数很容易。然后很容易为您不想复制的某些字符添加检查。因此,首先要您自己的实现strcpy
  • 我的问题是:输入原始字符串如:qwertyabc 然后输入要删除的几个字符如:eb 然后输出是qwrtyac

标签: c


【解决方案1】:

请看下面的代码,它可能会有所帮助。

int main()
{
    int i=0,j=0,k=0,q;
    char a[20],b[20];
    char *p = malloc(20);
    scanf("%s %s",a,b);
     while(a[i] != '\0')
     {
         j=0;
         q =0;
         while(b[j] != '\0')
         {
            if(a[i] == b[j])
            {
                q  =1;
                break;
            }
            j++;
         }
         if(!q)
         p[k++] = a[i];
         i++;
     }
     p[k] = '\0';
     printf("%s\n",p);
     free(p);
     return 0;
}

【讨论】:

    【解决方案2】:

    deleteFunc改成

    int deleteFunc(char chara[100], char a){
        int i ;
        for ( i = 0 ; i < 100 && chara[i]; i++)//'\0' after the garbage data
            if (a == chara[i])
                return TRUE;
        return FALSE;//If that does not match all of the candidate
    }
    

    主要是

    *pointer = '\0';
    printf("String after removing is \"%s\"\n", start);//Display prior to release, or written back
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2012-04-09
      • 2016-07-26
      • 2013-09-18
      相关资源
      最近更新 更多