c、删除字符串中包含数字的单词

标签 c string

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

例如如果输入为 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;
}

问候

关于c、删除字符串中包含数字的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22429509/

相关文章:

java - Append 方法在 StringBuilder 中不起作用

c - C 如何检索二维数组的行地址

c - 如何修复在 C 上显示段错误的代码?

c++ - 对从串口接收到的字符串进行分段

c# - 通过字符串列的最大值和最小值查找数据行中的值是否相等

Java 初级扫描仪

java - 删除第一个不区分大小写的 ArrayList 副本

c - 我在 ncurses 中的窗口不显示任何内容

c - 使用宏的缺点

c++ - 使用 c_str() 或 toCharArray() 将字符串转换为 const char?