Содержание
- 2. Потоки
- 3. Основой понимания системы ввода/вывода Си являются концепции потоков и файлов. Поток данных — абстракция, используемая для
- 4. Потоки не зависят от устройств, поэтому одни и те же функции могут использоваться для записи информацию
- 5. Текстовые потоки - это последовательность символов. В текстовых потоках некоторые символы могут преобразовываться согласно требованиям среды.
- 6. Двоичный поток - это последовательность байт, имеющих однозначное соответствие с байтами во внешнем устройстве (преобразование символов
- 7. Файлы
- 8. В Си файлы - это логическая концепция, применимая ко всему, начиная от дисковых файлов оканчивая терминалами.
- 9. Основные определения
- 10. Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Файл, как и массив,
- 11. Полное имя файлов – это полный адрес к директории файла с указанием имени файла, например: D:\docs\file.txt.
- 12. Текстовые файлы могут быть просмотрены и отредактированы с клавиатуры любым текстовым редакторов и имеют простую структуру:
- 13. Открытие файла
- 14. Большинство функций для работы с файлами находятся в библиотеках stdio.h и io.h. Поток связывается с конкретным
- 15. При успешном открытии происходит возвращение указателя на FILE. Эта структура связана с физическим файлом и содержит
- 16. . . . FILE *fp; if ((fp = fopen("d:\@Work\test11.txt",“r")) == NULL) { printf("Cannot open file.\n");exit(1); }
- 17. w – запись в текстовом режиме; (если файла с заданным именем нет, то он будет создан,
- 18. rb, wb, ab, r+b, w+b, a+b – файл открывается в двоичном режиме. При открытии файла в
- 19. При открытии файла этот метод контролирует возможность ошибок при открытии (проверяет наличие защиты от записи или
- 20. Закрытие файла
- 21. Связь потока с файлом уничтожается с помощью операции закрытия. Закрытие потока вызывает принудительный сброс всего содержимого
- 22. Функция fclose() имеет прототип: int fclose(FILE *fp); При успешном завершении возвращает 0, а в случае неудачи
- 23. Пример void main(){ int f; char *str = new char[50]; FILE *fp; if ((fp = fopen("d:\\@Work\\test.txt","w"))
- 24. Индикатор конца файла
- 25. Функция feof() проверяет, достигнут ли конец файла, связанного с потоком, через параметр filestream. Возвращается значение, отличное
- 26. Дальнейшие операции с файлом, после достижения его конца не будут выполняться до тех пор, пока внутренний
- 27. . . . void main(){ int f; char *str = new char[50]; FILE *fp; if ((fp
- 28. Функции чтения / записи в файл
- 29. Все действия по записи/чтению данных из файла можно разделить на три группы: операции посимвольного ввода-вывода; операции
- 30. Функции fgetc( ) и fputc( ); Функция fgetc() возвращает следующий за текущей позицией символ из входного
- 31. Функция fputc() записывает символ ch в указанный поток в позицию, соответствующую текущему значению указателя положения в
- 32. . . . void main(){ setlocale(LC_CTYPE, "Rus"); char sym = '1', ch; FILE *fp; if ((fp
- 33. if ((fp = fopen("d:\\@Work\\test23.txt", "r")) == NULL) { printf("Cannot open file.\n");exit(1); } fflush(stdin); puts("Считаны символы: ");
- 34. Функции fprintf() и fscanf() Данные функции ведут себя так же, как и printf() и scanf(), за
- 35. Пример 2 Построчный ввод/вывод . . . void main(){ setlocale(LC_CTYPE, "Rus"); char *str = new char[50];
- 36. Пример 3 Построчный ввод/вывод . . . void main(){ setlocale(LC_CTYPE, "Rus"); int number; char *str1 =
- 37. if ((fp = fopen("d:\\@Work\\test22.txt", "r")) == NULL) { printf("Cannot open file.\n");exit(1); } fflush(stdin); puts("Строка, считанная из
- 38. Функции fgets() и fputs() Могут читать и писать строки в поток. Они имеют следующие прототипы: int
- 39. Функция fgets() считывает символы до тех пор, пока не встретится символ «новая строка», EOF или до
- 40. . . . void main(){ setlocale(LC_CTYPE, "Rus"); char *str1 = new char[255]; char *str2 = new
- 41. do { key = _getch(); } while (key != 'n' && key != 'N'&&key != 'y'
- 42. Функции fwrite() и fread() Функции, позволяющие читать и писать блоки данных. Блочный ввод-вывод целесообразно использовать с
- 43. Позиционирование в файле
- 44. Каждый открытый файл имеет, так называемый указатель на текущую позицию в файле. При каждом выполнении функции
- 45. При необходимости чтения или записи данных в произвольном порядке применяется функцией fseek(). Функция fseek() перемещает указатель
- 46. Значения, которые может принимать параметр origin : SEEK_SET - Смещение выполняется от начала файла SEEK_CUR -
- 47. Функция fseek() . . . void main(){ setlocale(LC_CTYPE, "Rus"); int number; char *str1 = new char[50];
- 48. if (ch == 'y'){ puts("Введите номер телефона: "); fflush(stdin); gets(str2); fseek(fp, strlen(str1), SEEK_SET); fputs(str2, fp); }
- 49. Функции библиотеки Си для работы с файлами
- 50. void rewind(FILE *fp); – устанавливает индикатор позиции на начало указанного потока. ... fgets(str3,255,fp); puts(str3); *str3 =
- 51. long filelength (int fp);– возвращает длину файла, имеющего дескриптор fp , в байтах; библиотека io.h FILE
- 52. Переименование файла int rename (const char *oldname, const char *newname ); Успех – 0, неудача –
- 54. Скачать презентацию