Работа с файлами в си ввод и вывод в файл в си

8 марта 2019 - Администратор

Работа с файлами в си

В этой статье мы узнаем, как считывать данные из файлов и записывать информацию в файлы в программах си. Файлы в си используются для того, чтобы сохранять результат работы программы си и  использовать его при новом запуске программы . Например можно сохранять результаты вычислений , статистику игр.
Чтобы работать с файлами в си необходимо подключить  библиотеку stdio.h
#include <stdio.h>
Чтобы работать с файлом в си необходимо задать  указатель на файл по образцу
FILE *имя указателя на файл;
Например  
FILE *fin; 
Задает  указатель  fin на файл
Дальше необходимо  открыть файл и привязать его к файловому указателю. Для открытия файла в си на чтение  используется команда
Имя указателя на файл= fopen("путь к файлу", "r");
Например следующая команда
fin = fopen("C:\\Users\\user\\Desktop\\data.txt", "r");
откроет файл  data.txt, находящийся на рабочем столе  по пути C:UsersuserDesktop Чтобы узнать путь к файлу можно выбрать файл мышью нажать на правую кнопку мыши и выбрать свойства файла. В разделе Расположение будет указан путь к файлу. Обратите внимание , что в си путь указывается с помощью двух слешей. 
После работы с файлом в си , необходимо его закрыть с помощью команды
fclose(имя указателя на файл)

Считывание информации из текстового файла в Си

Чтобы можно было считывать русские символы из файла, необходимо настроить работу с Кириллицей с помощью команды
setlocale(LC_ALL, "Russian");

При этом необходимо в начале программы подключить #include <iostream>

Оператор fscanf() 

Для считывания слова из файла в си используется команда fscanf(). Эта команда аналогична  команде ввода информации с клавиватуры в си scanf() только первый параметр это указатель на файл
fscanf(указатель на файл,"%формат ввода данных1% форматввода данных2…",&перменная1,&переменная2…);
Например команда 
fscanf(fin,"%d%d%d",&a,&b,&c);
считает из файла, который привязан к указателю на файл fin строку из трех целочисленных переменных
Разберем пример программы, которая считывает из текстового файла data.txt в которые записаны три столбца цифр информацию и записывает ее в массивы. Для каждого столбца информации свой массив. Подробно о работе  с массивами в Си.
#include <stdio.h>
#include <conio.h>
main()
{     int a[10];
      int b[10];
      int c[10];
      int i;  
// определяем указатель на файл
     FILE *fin;
// открываем файл на чтение
      fin = fopen("C:\\Users\\user\\Desktop\\data.txt", "r");
// построчное считывание из файла
     for (i=0;i<3;i++)
     {
// считывание строки из  трех значений файла и запись в массивы
         fscanf(fin,"%d%d%d",&a[i],&b[i],&c[i]);        
     }
// вывод массивов на экран
 for (i=0;i<3;i++)
     {
         printf("%d %d %d\n",a[i],b[i],c[i]);           
     }   
     getch();
// закрытие файла
     fclose(fin);
}

Построковое считывание информации из файла в СИ.Функция fgets ( )

Оператор fscanf() считывает из файла слово , т.е. до первого встречного пробела.
Чтобы считать из файла всю  строку из файла в Си используется конструкция
if ( NULL != fgets (строковая переменная, длина строки, указатель на файл ) )
{
действия при считывании строки
}

Например программа на Си которая считывает две строки из файла и выводит их на экран
#include <stdio.h>
#include <conio.h>
#include <iostream>
main()
{
// задаем строковые перменные
char st1[100];
char st2[100]; 
//определяем указатель на файл
      FILE *fin;
// настриваем работу с Кириллицей
      setlocale(LC_ALL, "Russian");
// открываем файл на чтение
      fin = fopen("C:\\data.txt", "r");
// считываем первую строку из файла
if ( NULL != fgets ( st1, 100, fin ) )
{
// выводим строку на экран
printf("%s ",st1);}  
// считываем вторую строку из файла       
if ( NULL != fgets ( st2, 100, fin ) )
{
// выводим строку на экран
printf("%s\n",st2);}
// закрываем файл на чтение
   fclose(fin);
}


 

Запись информации в текстовый  файл в Си

Для записи данных в файл в Си, необходимо открыть файл в режиме записи
Имя указателя на файл= fopen("путь к файлу", "w");
Для записи в строку текстового файла используется команда fprnitf(), которая аналогична команде printf() вывод на экран в си только первый параметр это указатель на файл
fprintf (имя указателя на файл,”%формат ввода”, переменные);
Например  запись в файл out.txt  значение переменной а
a=10;
fout = fopen("C:\\Users\\user\\Desktop\\out.txt", "w");
fprintf (fout,”%d”, a);

Пример программы на си которая запрашивает два числа и записывает в файл out.txt оба эти числа и их сумму

#include <stdio.h>
#include <conio.h>

main()
{    int a;
     int b;
     int c;
     FILE *fout;
     fout = fopen("C:\\Users\\user\\Desktop\\out.txt", "w");
     printf ("введите первое число \n");
     scanf("%d", &a);
     printf ("введите второе число \n");
     scanf("%d", &b);
     c=a+b;
     fprintf(fout,"%d %d %d",a,b,c);
     getch();
     fclose(fout);
}

Вернуться к содержанию Перейти к уроку Ошибки в программах на си

Поделиться

 
 
Комментарии (0)

Нет комментариев. Ваш будет первым!