6. Чем отличается ввод строки с помощью функции scanf() от ввода с помощью функции gets()?
7. Чем отличается ввод строки с помощью функции gets() от ввода с помощью функции fgets()?
8. Какие функции ввода строк являются безопасными? Каковы особенности их использования?
9. Сколько символов выводит на экран функция puts()?
10. Каковы особенности вывода строк на экран с помощью функции printf()?
11. Можно ли использовать операцию присваивания для задания значения строки?
12. Как изменить строку?
13. Что такое конкатенация строк?
14. Как преобразовать строку в число?
15. Как преобразовать число в строку?
16. Объясните принципы работы функции strtok().
Практическая работа №7. Файлы
Цель работы – познакомиться с потоковыми функциями языка С для работы с текстовыми и бинарными файлами, научиться использовать прямой и последовательный доступ к данным, хранящимся в файлах.
Основные функции для работы с файлами
Открытие потока
FILE *fopen (char *filename, char *mode);
filename – имя файла, mode – режим открытия, который может принимать одно из значений, указанных в таблице 3.
Таблица 3
Режим | Выполняемые действия |
"r" | - текстовый файл открывается для чтения (от read (англ.) - читать); |
"w" | - текстовый файл создается для записи; старое содержимое (если оно было) выбрасывается (от write (англ.) - писать); |
"а" | - текстовый файл открывается или создается для записи в конец файла (от append (англ.) - добавлять); |
"r+" | - текстовый файл открывается для исправления (т. е. для чтения и для записи); |
"w+" | - текстовый файл создается для исправления; старое содержимое (если оно было) выбрасывается; |
"a+" | - текстовый файл открывается или создается для исправления уже существующей информации и добавления новой в конец файла. |
Для работы с бинарными файлами следует добавить к режиму открытия букву b, например "r+b"
Закрытие потока
int fclose ( FILE * stream );
Функции чтения данных из файла
Чтение одного символа
int fgetc ( FILE * stream );
при достижении конца файла возвращается значение EOF.
Чтение строки
char * fgets (char *s, int n, FILE *stream);
при достижении конца файла возвращается значение NULL.
Форматный ввод
int fscanf (FILE *stream, char *format, ...);
при достижении конца файла возвращается значение EOF.
Прямой ввод
size_t fread (void *ptr, size_t size, size_t nobj, FILE *stream);
при достижении конца файла возвращается значение, меньшее nobj.