Найти слово в текстовом файле - C (СИ)
Формулировка задачи:
добрый день! как организовать поиск слова
while
в текстовом файле на СИ? Есть такой код на с++, необходимо переделать под сиif (s.find("while")!=string::pros)Решение задачи: «Найти слово в текстовом файле»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void modifyword(char* w);
int main()
{
FILE * infile;
int st = 0;
char word [30], findword[30] = "while";
infile = fopen ("file.txt" , "r");
if (infile == NULL) perror ("Error opening file");
else {
while (!feof(infile))
{
if(fscanf (infile, "%s", word)!= 1)
{
perror("File is empty");
return -1;
}
modifyword(word);
if(!strcmp(word, findword))
{
printf("%s\n", word); st++;
}
}
if(!st) puts("The word not found");
fclose (infile);
}
return 0;
}
void modifyword(char* w)
{ // все кроме букв убираем в конце слова
int i = strlen(w), st = 0;
char *ch = w;
while(i)
{
if(isalpha(*(w + i)))
break;
i--;
}
*(w + i + 1) = '\0';
////////////////////////////////////////
// все кроме букв убираем в начале слова
while(*w)
{
if(isalpha(*w)) st = 1;
if(st)
*(ch++) = *w ;
w++;
}
*ch = '\0';
}
Объяснение кода листинга программы
- Объединение двух строк с помощью оператора конкатенации (==)
- Использование функции fopen для открытия файла
- Использование функции feof для проверки конца файла
- Использование функции fscanf для чтения слова из файла
- Вызов функции perror для вывода сообщения об ошибке
- Использование функции strcmp для сравнения двух строк
- Использование функции printf для вывода найденного слова
- Использование функции puts для вывода сообщения, что слово не найдено
- Использование функции fclose для закрытия файла
- Использование функции isalpha для проверки, является ли символ буквой
- Использование функции strlen для определения длины строки
- Использование оператора break для выхода из цикла
- Использование оператора i++ для перехода к следующему символу в строке
- Использование оператора w++ для перехода к следующему символу в строке
- Использование оператора (ch++) = w ; для переноса букв в новую строку
- Использование оператора *(ch) = '\0'; для добавления нулевого символа в новую строку
- Объединение двух строк с помощью оператора конкатенации (||)
- Использование функции strlen для определения длины строки
- Использование оператора i-- для перехода к предыдущему символу в строке
- Использование оператора break для выхода из цикла