Лекция_2._Обработка_симв_инф_Файлы_Программирование_2_семестр (1271738), страница 3
Текст из файла (страница 3)
FILE *f_in, *f_out;
f_in=fopen("f_in.txt", "rt");
if (f_in==NULL)
puts("file is not opened");
else
if feof(f_in)
puts("file is empty");
else
{
f_out=fopen("f_out.txt", "wt");
k=0;
while (fgets(s,NMAX+1,f_in)!=NULL)
{
if (strstr(s,"Иванов ")!=NULL || strstr(s,"Иванова ")!=NULL)
{
k=k+1;
fputs(s,f_out);
}
}
if (k>0)
{
fclose(f_out);
printf ("k=%d\n", k);
puts("output file is ready");
}
else
puts("k=0");
}
_getch();
}
Пример 3. Та же задача, что и в примере 2, но каждая строка текстового файла считывается в переменную-структуру.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#pragma hdrstop
#define NMAX 100
void main()
{ typedef struct {
char s1[NMAX],s2[NMAX];
} fam_im;
fam_im f_i;
int k,i;//число Ивановых
FILE *f_in, *f_out;
f_in=fopen("f_in.txt", "rt");
if (f_in==NULL)
puts("file is not opened");
else
if feof(f_in)
puts("file is empty");
else
{
f_out=fopen("f_out.txt", "wt");
k=0;
while (fscanf(f_in,"%s %s",&f_i.s1,&f_i.s2)!=EOF)
{
if (strcmp(f_i.s1,"Иванов")==0|| strcmp(f_i.s1,"Иванова")==0)
{
k=k+1;
fprintf(f_out, "%s %s\n", f_i.s1,f_i.s2);
}
}
if (k>0)
{
fclose(f_out);
printf ("k=%d\n", k);
puts("output file is ready");
}
else
puts("k=0");
}
_getch();
}
18