C语言 删除指定的单词

题目:

编写一个程序,先读入一段正文,然后删除其中的单词from,in,at,an,on,最后显示该结果文本段

#include<stdio.h>
#include<math.h>
#include<string.h>
void replace(char a[],int len){
    for(int i=0;i<len;i++)
        if(a[i]==','||a[i]=='.'||a[i]=='!')
            a[i]=' ';
    for(int i=0;i<len;i++)
        if(a[i]==' ')
            if(a[i+1]==' ')
                for(int j=i+1;j<len;j++)
                    a[j]=a[j+1];
}
int divide(char a[],char (*pattern)[10])
{
    //i在a中走,j,k在pattern中走
    int n=(int)strlen(a);
    int j=0,k=0;
    for(int i=0;i<n;i++)
    {
        while(a[i]!=' ')
            pattern[j][k++]=a[i++];
        j++;
        k=0;
    }
    return j;
}
void find(char (*pattern)[10],int num_letter){
    char target[5][7]={{"from"},{"in"},{"at"},{"an"},{"on"}};
    
    for(int i=0;i<num_letter;i++)
        for(int j=0;j<5;j++)
            if(strcmp(pattern[i], target[j])==0)
                strcpy(pattern[i], " ");
}
void print(char (*pattern)[10],int num_letter)
{
    for(int i=0;i<num_letter;i++)
        if(strcmp(pattern[i], " ")!=0)
            printf("%s	",pattern[i]);
}
int main(){
    char text[100];
    gets(text);
    int n=(int)strlen(text);
    char pattern[15][10];
    for(int i=0;i<15;i++)
        strcpy(pattern[i], " ");
    
    replace(text, n);//替换
    int num_letter=divide(text, pattern);//切分
    
    print(pattern, num_letter);//输出切分过后的字母
    
    find(pattern, num_letter);//寻找符合题意的字母并删除
    
    printf("
=================
");
    print(pattern, num_letter);
    printf("
");
}

 

原文地址:https://www.cnblogs.com/oldfish123/p/13632755.html