В файле F заменить на звездочку(*) слова в которых нету букв слова "word" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В файле F заменить на звездочку(*) слова в которых нету букв слова "word"
#include <stdio.h>
#include <conio.h>
void main(){
    char word[8] = {'w','o','r','d','W','O','R','D'};
    char temp;
    char z = '*';
    char p = ' ';
    int k,j,i = 0;
    int check;
    FILE *f1  = fopen("file.txt","rt");
    FILE *f2  = fopen("write.txt","wt");
    if(f1 == NULL && f2 == NULL){
        printf("fail!\n");
    }
    char str;
    while((str=fgetc(f1)) != EOF){
        if(str == '\0'){
        fputc(p,f2);
        }
        while(str != '\0'){
        temp[i] = str;
        i++
        }
        for(k=0;k<=sizeof(temp); k++){
        check =0;
            for(j=0;j<=sizeof(word); j++){
                if(temp[k] == word[j]){
                    check = 1;
                }
            }
        
        }
        if(check == 0){
            for(k=0;k<=sizeof(temp);k++){
                fputc(temp[k],f2);
            }
        }
        else{
            fputc(z,f2);
        }
    }
    
    getch();
}
В данным коде заменяется на звездочку каждый символ, а не слово. Как реализовать считывание по словам и замену слова на звездочку. Благодарю за помощь!!!

Решение задачи: «В файле F заменить на звездочку(*) слова в которых нету букв слова "word"»

textual
Листинг программы
while ( fscanf(fin, "%255s", buf) == 1 )
    fprintf(fout, "%s ", ( strpbrk(buf, "word") ) ? buf : "*");

Объяснение кода листинга программы

  1. В цикле while считывается строка из файла fin в буфер buf с помощью функции fscanf.
  2. Если длина строки в buf не превышает 255 символов, то она выводится в файл fout с добавлением пробела в конце с помощью функции fprintf.
  3. В строке buf проверяется наличие букв слова word с помощью функции strpbrk.
  4. Если в строке есть буквы слова word, то она выводится в файл fout без изменений.
  5. Если в строке нет букв слова word, то вместо нее выводится звездочка.

Оцени полезность:

11   голосов , оценка 3.545 из 5
Похожие ответы