Как я могу записать небольшой фрагмент текста в файл .txt
? Я гуглил более 3-4 часов, но не могу понять, как это сделать он.
fwrite ();
имеет так много аргументов, и я не знаю, как его использовать.
Что самая простая функция, которую можно использовать, если вы хотите записать только имя и несколько чисел в файл .txt
?
Изменить: добавлен фрагмент моего кода.
имя символа; int число; ФАЙЛ * f; f = fopen ("contacts.pcl", "a"); printf (" nНовое имя контакта:"); scanf ("% s", & имя); printf ("Новый контактный номер:"); scanf ("% i", & число); fprintf (f, "% c n [% d] n n", имя, номер); fclose (f);
FILE * f = fopen ("file.txt", "w"); if (f == NULL) {printf ("Ошибка при открытии файла! N"); exit (1);}/* напечатать текст */const char * text = "Записать это в файл"; fprintf (f, "Some text:% s n", text);/* напечатать целые числа и числа с плавающей запятой * /int i = 1; float py = 3.1415927; fprintf (f, "Целое число:% d, float:% f n", i, py);/* печать одиночных чатактеров */char c = 'A'; fprintf ( f, «Символ:% c n», c); fclose (f);
FILE * fp; char * str = "string"; int x = 10; fp = fopen ("test.txt", "w"); if (fp == NULL) exit (- 1); fprintf (fp, «Это строка, которая записывается в файл n»); fprintf (fp, «Строка содержит% d слов и ключевое слово% s n», x, str); fclose (fp );
0
Войдите, чтобы продолжить
Если вы когда-либо использовали язык более высокого уровня Возможности файлового ввода-вывода, такие как Python или Rust, вы, возможно, думали, насколько легко манипулировать файлами для решения ваших проблем, даже если читать в файле конфигурации, разбирать файл на токены или просто записывать информацию на диск. Может быть, вам интересно, как файловый ввод-вывод работает в C? *
* Конечно, никто не умеет читать мысли, в том числе и я.
Чтение символа
Самый фундаментальный файловый ввод-вывод начинается с чтения/записи символов. Стандартная библиотека ввода-вывода C предоставляет функции fgetc ()
и fputc ()
для чтения и записи символов соответственно.
Как они работают, очень просто. Оба работают с файловыми потоками или, что более широко известно в C, типом FILE
.. Этот тип представляет собой структуру, которая отслеживает множество различных состояний, например, сколько символов было прочитано/записано, состояние ошибки и т. Д. Мы никогда не просматриваем и не изменяем информацию, содержащуюся в FILE
напрямую, вместо этого мы используем предоставленные нам функции для извлечения этой информации. Все стандартные функции ввода-вывода C, работающие с файлами, отражают это. Все они принимают указатель на ФАЙЛ
.
Убрав вводный текст, мы можем начать использовать файлы на C.
Во-первых, нам нужно получить объект FILE
для использования в наших файловых приключениях. Как нам его получить? С функцией fopen ()
.
fopen ()
прост: первый аргумент — это путь к файлу и второй — режим.
Mode? Что это?
Режим в контекстах файлового ввода-вывода относится к тому, какие разрешения у нас есть для файла и как он открывается. Разрешения говорят о том, можем ли мы читать, писать или и то, и другое. Способ открытия файла может означать разные вещи в зависимости от разрешений.
В fopen ()
режимом является строка.
-
r
Чтение -
w
Запись -
r +
Чтение и запись -
w +
Чтение и письмо. Если файл не найден, создается -
a
Запись и начинается с конца файла. Если файл не найден, создается -
a +
Чтение и запись. Если файл не найден, он создается. Начальная позиция для чтения начинается с начала, но добавляется к файлу при записи
При ошибке fopen ()
возвращает нулевой указатель или FILE *
в случае успеха.
Пример:
#include int main (void) {FILE * file = fopen ("test.txt", "w"); if (file == NULL) {//обрабатываем ошибку}//используем файл}
Для начала допустим, что мы хотим записать сообщение только в файл с помощью fputc ()
. Очевидно, первое, что нам нужно, это наше сообщение, которое представляет собой строку. Для наших целей это может быть просто строковый литерал.
#include #include int main (void) {FILE * file = fopen ("message.txt", "w"); if (file == NULL) {printf ("Не удалось открыть файл! n"); возврат 1; } char * message = "Я файл n"; int я = 0; while (i
Вывод:
~/Desktop ➜ clang main.c ~/Desktop ➜ ./a.out~/Desktop ➜ cat message.txt Я - файл ~/Desktop ➜
Идеально подходит для демонстрации целей, но в реальном мире что-то может внутренне дать сбой, и ваш персонаж может остаться неписаным. fputc ()
и друзья возвращают символ, написанный в случае успеха, но EOF
в случае ошибки. EOF
— это макрос, обозначающий E nd O f F и расширяется до постоянного целочисленного выражения. Обычно он возвращается функциями, считывающими символы, чтобы вызывающий код знал, что был прочитан последний символ. В других случаях, таких как fputc ()
, это означает, что произошла ошибка.
Обновленная версия с проверкой ошибок:
#include #include int main (void) {FILE * file = fopen ("message.txt", "w"); if (file == NULL) {printf ("Не удалось открыть файл! n"); возврат 1; } char * message = "Я файл n"; int я = 0; while (i
Намного лучше. Если что-то пошло не так, мы узнаем об этом, как только это произойдет.
Затем, что, если мы пытаемся читать из того же файла? Код в основном будет таким же, за исключением того, что режим будет установлен на чтение, а цикл while
теперь читает посимвольно из файла.
Пример:
#include #include int main (void) {FILE * file = fopen (" message.txt "," r "); if (file == NULL) {printf ("Не удалось открыть файл! n"); возврат 1; } символ сообщения [100]; int c = 0; int я = 0; в то время как ((c = fgetc (файл))! = EOF) {сообщение [i] = c; i ++; } printf ("% s", message);}
Вывод:
~/Desktop ➜ clang main.c ~/Desktop ➜ ./a.out Я - файл ~/Desktop ➜
Далее
В следующем посте мы поговорим о других функциях, доступных нам для файлового ввода-вывода.