我需要从字符串中删除所有包含数字的单词。
例如。如果输入为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;
}
问候