ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Fprintf(указатель на файл, формат вывода, список вывода);Пример 1: записать в файл my_file.txt построчно значения элементов следующего массива mass34: 1 2 3 4 5 6 7 8 9 10 11 12 Программа const int n=3; const int m=4; const int k=m*m; Int i, j; int mass[n][m]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int vector[k]; FILE *f_text; f_text=fopen(“D:/User/my_file.txt”, “w”); // файл открыт for (i=0; i<n; i++) { for (j=0; j<m; j++) fprintf(f_text, “%5d”, mass[i][j]); fprintf(f_text, “\n”); } fclose(f_text); // после записи файл обязательно закрыть! Структура файла my_file.txt: 1 2 3 4 5 6 7 8 9 10 11 12 Внимание! При записи чисел в текстовый файл оставлять между ними хотя бы по одному пробелу! Перед чтением данных из файла его необходимо открыть для чтения: f=fopen(“путь”, “r”); Если файл не найден, то значение указателя f будет равно NULL. Форматированное чтение (ввод) из файла осуществляется функцией: Fscanf(указатель на файл, формат ввода, список ввода); Прочитаем созданный файл и запишем числа в вектор vector16: f_text=fopen(“D:/User/my_file.txt”, “r”); // файл открыт for (i=0; i<k; i++) // обнуляем вектор vector[i]=0; i=0; // индекс очередного элемента while (!feof(f_text)) // пока не конец файла { fscanf(f_text, “%d”, &j); // читаем из него данные vector[i]=j; // и записываем в вектор i++; } printf("\nVector_1:\n"); for (i=0; i<k; i++) printf("%4d", vector[i]); printf("\n"); На экран будет выведено: Vector_1: 1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 0 Добавим в последнюю строку файла последовательность чисел 4, 3, 2, 1: f_text=fopen(“D:/User/my_file.txt”, “a”); // файл открыт for (i=4; i>0; i--) fprintf(f_text, “%5d”, i); fprintf(f_text, “\n”); fclose(f_text); // после записи файл обязательно закрыть! Структура файла my_file.txt: 1 2 3 4 5 6 7 8 9 10 11 12 4 3 2 1 Снова прочитаем созданный файл и запишем числа в вектор vector16: f_text=fopen(“D:/User/my_file.txt”, “r”); // файл открыт for (i=0; i<k; i++) // обнуляем вектор vector[i]=0; i=0; // индекс очередного элемента while (!feof(f_text)) // пока не конец файла { fscanf(f_text, “%d”, &j); // читаем из него данные vector[i]=j; // и записываем в вектор i++; } printf("\nVector_2:\n"); for (i=0; i<k; i++) printf("%4d", vector[i]); printf("\n"); На экран будет выведено: Vector_2: 1 2 3 4 5 6 7 8 9 10 11 12 4 3 2 1 Пример 3: создать базу данных на текстовом файле my_base.txt – в каждой его строке записать следующие данные о студентах: группа – строка длиной 10 символов, фамилия – строка длиной 20 символов, имя – строка длиной 10 символов, средний балл сессии – вещественное число, оценка по информатике – целое число. Опишем исходные данные: char gruppa[10]; char fam[20]; char name[10]; Float sr_ball; Int ocenka; Создадим текстовый файл my_base.txt и откроем его для записи: FILE *f_base; // указатель на создаваемый файл f_base=fopen(“D:/User/my_base.txt”, “w”); Данные в базу будем вводить циклом с постусловием. Интерфейс программы: Gruppa: IS-09 Familija: Pupkin Imja: Vasilij Sr. ball: 3.14 Ocenka: 3 Gruppa: IS-09 Familija: Ivanov Imja: Ivan Sr. ball: 4.09 Ocenka: 5 Gruppa: 0 Запросы продолжаются до тех пор, пока вместо номера группы не введем цифру ноль – это терминатор (прерыватель цикла ввода). После ввода данных об очередном студенте записываем их в файл форматным способом, указывая длину каждого записываемого данного: fprintf(f_base, “%10s%20s%10s%5.2f%2d\n”, gruppa, fam, name, sr_ball, ozenka); Программа FILE *f_base; // указатель на создаваемый файл char gruppa_1[10]; char fam_1[20]; char name_1[10]; Float sr_ball; Int ocenka; f_base=fopen("D:/User/my_base.txt", "w"); Do { printf("\n gruppa:"); scanf("%s", gruppa); if (gruppa[0]=='0') // если ноль – выход из цикла ввода Break; printf("\n familija:"); scanf("%s", fam); printf("\n imja:"); scanf("%s", name); printf("\n sr. ball:"); scanf("%f", &sr_ball); printf("\n ocenka:"); scanf("%d", &ocenka); fprintf(f_base, "%10s%20s%10s%7.2f%5d\n", gruppa, fam, name, sr_ball, ocenka); } while (1); // псевдобесконечный цикл fclose(f_base); // после записи файл обязательно закрыть!
Структура файла: Не нашли, что искали? Воспользуйтесь поиском:
|