Стандартная библиотека C++ <cstdio>
<cstdio>Это заголовочный файл в стандартной библиотеке C++. Он содержит оболочку C++ для стандартной библиотеки ввода-вывода C и в основном используется для операций ввода-вывода файлов.
<cstdio>Библиотека определяет набор функций для выполнения операций ввода и вывода. Эти функции можно использовать для чтения и записи файлов и консоли.
Синтаксис
При использовании<cstdio>Перед использованием функций библиотеки необходимо подключить этот заголовочный файл в верхней части программы на C++:
#include <cstdio>
Общие функции
<cstdio>Библиотека содержит множество функций для файлового ввода-вывода. Ниже приведены некоторые часто используемые функции:
fopen: Открыть файл.fclose: Закрыть файл.fread: Считать данные из файла.fwrite: Записать данные в файл.fprintf: Записать форматированный вывод в файл.fscanf: Считать форматированный ввод из файла.fgetc: Считать символ из файла.fputc: Записать символ в файл.fgets: Считать строку из файла.fputs: Записать строку в файл.
Пример
1. Открытие и закрытие файлов:
Пример
int main() {
FILE *file = fopen("example.txt", "w"); // Открыть файл для записи
if (file == NULL) {
perror("Ошибка файла");
return 1;
}
fclose(file); // Закрыть файл
return 0;
}
2. Запись данных в файл:
Пример
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Ошибка файла");
return 1;
}
fprintf(file, "Hello, World!n");
fclose(file);
return 0;
}
Записано "Hello, World!" в файл "example.txt".
3. Чтение данных из файла:
Пример
#include <iostream>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Ошибка файла");
return 1;
}
char buffer[100];
while (fgets(buffer, 100, file) != NULL) {
std::cout << buffer;
}
fclose(file);
return 0;
}
Прочитать из файла "example.txt" и вывести "Hello, World!".
4. Используйте fscanf и fprintf для форматированного ввода и вывода:
Пример
int main() {
FILE *file = fopen("data.txt", "w");
if (file == NULL) {
perror("Ошибка файла");
return 1;
}
fprintf(file, "%d %fn", 42, 3.14159);
fclose(file);
file = fopen("data.txt", "r");
if (file == NULL) {
perror("Ошибка файла");
return 1;
}
int number;
float pi;
fscanf(file, "%d %f", &number, &pi);
fclose(file);
std::printf("Number: %d, Pi: %fn", number, pi);
return 0;
}
Результат вывода:Number: 42, Pi: 3.141590
fopen и fclose
Используется для открытия и закрытия файлов.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
// Файловые операции
fclose(file);
} else {
// Обработать ошибки
}
return 0;
}
fread и fwrite
Используется для чтения и записи данных из файлов и в файлы.
Пример
int main() {
FILE* file = fopen("example.bin", "wb");
if (file) {
int data = 12345;
fwrite(&data, sizeof(data), 1, file);
fclose(file);
}
return 0;
}
fseek и ftell
Используется для перемещения файлового указателя внутри файла и получения позиции файлового указателя.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
fseek(file, 0, SEEK_END); // Перейти в конец файла
long size = ftell(file); // Получить размер файла
fclose(file);
}
return 0;
}
fflush
Сбросить файл, чтобы записать данные из буфера в файл.
Пример
int main() {
FILE* file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!", file);
fflush(file); // Убедиться, что данные немедленно записаны в файл
fclose(file);
}
return 0;
}
printf и fprintf
Используется для форматированного вывода в стандартный вывод или файл.
Пример
int main() {
int value = 42;
printf("Value: %d\n", value); // Вывод в стандартный вывод
FILE* file = fopen("output.txt", "w");
if (file) {
fprintf(file, "Value: %d\n", value); // Вывод в файл
fclose(file);
}
return 0;
}
scanf и fscanf
Используется для форматированного ввода из стандартного ввода или файла.
Пример
int main() {
int value;
scanf("%d", &value); // Чтение из стандартного ввода
FILE* file = fopen("input.txt", "r");
if (file) {
fscanf(file, "%d", &value); // Чтение из файла
fclose(file);
}
return 0;
}
sprintf и sscanf
Используется для форматированного вывода в строку и чтения из строки.
Пример
int main() {
char buffer[50];
int value = 42;
sprintf(buffer, "Value: %d", value); // Вывод в строку
int readValue;
sscanf(buffer, "Value: %d", &readValue); // Чтение из строки
return 0;
}
fgets и fputs
Используется для чтения строки из файла и записи строки в файл.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
char buffer[100];
if (fgets(buffer, sizeof(buffer), file)) {
// Чтение успешно
}
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
fputs("Hello, World!\n", file); // Запись строки в файл
fclose(file);
}
return 0;
}
getc и putc
Используется для чтения символов из файла и записи символов в файл.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c = getc(file); // Прочитать символ
fclose(file);
}
file = fopen("example.txt", "w");
if (file) {
putc('A', file); // Записать символ
fclose(file);
}
return 0;
}
feof и ferror
Используется для обнаружения конца файла и ошибок файла.
Пример
#include <cstdio>
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
while (!feof(file)) {
int c = getc(file);
if (ferror(file)) {
// Обработать ошибки
break;
}
// Обработать символ
}
fclose(file);
}
return 0;
}
EOF
Указывает на флаг конца файла.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file) {
int c;
while ((c = getc(file)) != EOF) {
// Обработать символ
}
fclose(file);
}
return 0;
}
NULL
Представляет нулевой указатель.
Пример
int main() {
FILE* file = fopen("example.txt", "r");
if (file == NULL) {
// Обработка ошибки открытия файла
} else {
fclose(file);
}
return 0;
}
Примечания
- Использование
<cstdio>При использовании библиотеки необходимо обеспечить правильную обработку открытия и закрытия файлов, чтобы избежать утечек ресурсов. - При использовании
fopenПри использовании необходимо указать правильный путь к файлу и режим. - Использование
fprintfиfscanfПри использовании строка формата должна соответствовать типам переменных.