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