Приём инф-ции с файла – чтение ( ввод ), передача инф-ции в файл – запись (вывод ).Все операции чтение – записи делят. на 4 группы.
1. Операции посимвольного ввода – вывода.
2. построеового ввода – вывода.
3. Форматированного ввода – вывода.
4. Блокового ввода – вывода.
1. производят запись или приём одного символа.
Fgetc () – чтение из файла
Fputc () – запись в файл
Int fputc ( символ, указатель_на_файл );
Эта ф-ция возвращает код символа, а если ошибка – EOF
Пример:
# include < stdio.h >
main ()
{
FILE *fp;
Char letter;
If (( fp = fopen ( “ myfile ”,” W ” )) == NULL );
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
do
}
letter = getchar ();
}
fputc ( letter, fp );
while ( letter ! = ‘ \ n ’ );
fclose ( fp );
return 0;
}
int fgetc ( указатель_на_файл );
ф-ция извлекает из файла символ и возвращает его, если ошибка возвращает – EOF
Пример:
# include < stdio.h >
main ()
{
FILE *fp;
Char better;
If (( fp = fopen ( “ myfilo ”, “ r ” ) / == NULL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
while ( better = fgetc ( fp ) ! = EOF )
printf ( “ % c ”, better);
fclose ( fp );
return 0;
}
int feof ( указатель_на_файл )
возвращает не 0, если конец файла достигнут и 0 в противном случае.
Fputc.cpp
A: \ fputc.cpp
Пример: копирование
# include < stdio.h >
main ()
{
File *in, *out;
If (( in = fopen ( “ fputc.cpp ”, “ r ” )) ==NULL )
{
puts ( “ Невозможно открыть файл fputc.cpp” );
return 1;
}
if // out = fopen ( “ a: \ fputc.cpp ” )) = NULL )
{
puts ( “ Невозможно открыть файл a: \ fputc.cpp ” );
return 1;
}
while ( ! feot ( in ))
fputc ( fgetc ( in ), out );
fclose ( out );
return 0;
}
2 .fputs () – запись в файл строки
fgets () – чтение из файла строки.
Int fputs ( строка указатель_на_файл );
Записывает в файл строку до тех пор, пока не будет ‘ \ o ’ ( сам этот символ в строку не вносится).
Если при записи был достигнут конец файла, то эта ф-ция возвращает NULL.
Пример: / *fputs.cpp * /
# include < stdio.h >
# include < string.h >
main ()
{
FILE *fp;
Char name [ 40 ];
If (( = fopen ( “ myfile ”, ” W ” )) == NUUL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
printf ( “ Введите имя ” )
gets ( name);
while ( strlen ( name ) > 0 )
{
fputs ( name, fp );
fputs ( “ \ n ”, fp );
printf ( “ Введите имя : ” );
gets ( name );
}
/ *
для выхода – нажать Enter * /
fclose ( fp);
return 0;
}
int fgets ( строка, длина_строки, указатель_на_файл );
Длина_строки – число символов, кот. надо считать
Ф-ция возвращает символы строки и возвращает NULL в случае, когда достигнут конец файла или прочитано указанное число символов.
Пример: / *fgets.cpp * /
# include < stdio.h >
main ()
{
FILE * fp;
Char name [ 40 ];
If (( fp = fopen ( “ myfilo ”, ” r ” )) ==NUUL )
{
puts ( “ Невозможно открыть файл ” );
return 1;
}
while ( name, 40, fp ) ==NUUL )
gets ( name );
fclose ( fp );
return 0;
}
3 Ф-ции форматированного ввода-вывода;
fprintf () – ф-ция формат. записи
аысфта () – ф-ция формат. чтения
ште азкштеа ( указатель_но_файл, форматная строка, список_аргументов )
форматн. строка – текст и идентификаторы
В случае неуспешной записи в файл возвращает EOF
Int fscanf ( указатель_на_файл, форматная_строка, список_аргументов )
Пример: / * fprintf.cpp * /
# include < stdio.h >
# include < string.h >
main ()
{
FILE * fp;
Char filename [ 15 ];
Char product [ 20 ];
Float cost;
Int quantity;
Printf ( “ Введите имя файла, которой хотите создать: ” );
Gets ( name );
If (( fp = fopen ( name, “ W ” )) ==NUUL ))
{
printf ( “ Невозм. Откр. Файл %s \ n”, name );
return 1;
}
printf ( “ Введите назв. товара ” );
gets ( product );
while ( strlen ( product ) > 0 )
{
printf ( “ Введите стоимость товара: ” );
fflush ( stain );
scanf ( “ % f ”, & cost );
printf ( “ Введите кол-во товара: ” );
fflust ( stdin );
scanf ( “ % d ”, & quantity );
fprintf ( fp, “ % s % f % d “, product, cost, quantity );
printf ( “ Введите название товара: ” );
fflust ( stdin );
gets ( product );
}
fclose ( fp );
return 0;
}
/ * fscant.cpp * /
# include < stdio.h >
main ()
{
FILE * fp;
Char name [ 15 ];
Char product [ 40 ];
Float cost;
Int quantity;
Printf ( “ Введите имя файла: ” );
Gets ( name );
If (( fp = fopen ( name, “ r ” )) ==NUUL )
{
printf ( “ Невозм. открыт. файла % s \ n ”, name );
return 1;
}
while ( fscanf ( fp, “ % s % f % d ”, product, & cost, & quantity )=(EOF)
{
printf ( “ Название товара: % s \ n ” , product );
printf ( “ Стоимость % 2 f \ n ”, cost );
printf ( “ Кол-во % d \ n ”, quantity );
}
fclose ( fp );
return 0;
}
fscanf () не позволяет читать строки с пробелами. При вводе или выводе файла в формате, несоотв. спецификатору, эти ф-ции выдают ошибки.