我需要从字符串中删除所有包含数字的单词。

例如。如果输入为abdgh 67fgh 32ghj hj dfg43 11 fg,则输出应为abdgh hj fg

我曾考虑使用while( text[i] != ' '),但是我不知道如何在字符串的其余部分(在第一个空格之后)继续使用它。

我没有其他想法,无法通过谷歌搜索找到任何东西。请帮我!

最佳答案

在这里,我尝试了一下。对我来说很好。我试图通过注释来解释整个代码中的逻辑。希望能帮助到你。

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


int containsNum(char * str);

int main()
{

  char  str[] = "abdgh 67fgh 32ghj hj dfg43 11 fg"; // input string

  char newstr[100] = ""; //new string to create with filtered data

  char * pch; //temp string to use in strtok

  printf("given string : %s\n",str    );

  pch = strtok (str," ");
  while (pch != NULL)
  {
    if(!containsNum(pch))// creation of new string  with strcat
    {                    // if the current word not contains any number
        strcat(newstr,pch);
        strcat(newstr," ");  //adding a space between words for readability
    }
    pch = strtok (NULL, " ");
  }

    printf("modified string : %s\n", newstr );

   return 0;
}
//function containsNum
//gets a string and checks if it has any numbers in it
//returns 1 if so , 0 otherwise
int containsNum(char * str)
{
    int i,
        size =strlen(str),
        flag=0;
    for(i=0; i<size ; ++i)
    {
        if((int)str[i] >=48 && (int)str[i] <=57 ){
           flag =1;
           break;
        }
    }
    return flag;
}


问候

10-06 16:20