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.