Запись и чтение из файлов - C (СИ)
Формулировка задачи:
Помогите доделать программу. Нужно чтоб в данной программе происходила запись всех данных в файл "myfile.txt". А потом производило чтение из этого файла.
#include <iostream.h>
#include <locale.h>
#include <string.h>
#include<conio.h>
#include<stdio.h>
int main()
{
clrscr();
cout<<"vvedit FIO"<<endl;
char name[250];
cin.get(name,250);
cout<<"Dovjuna: "<<strlen(name)<<endl;
char*sp=strtok(name,", ");
while(sp)
{
cout<<sp[0];
sp=strtok(NULL, ", ");}
int x;
getch();
return 0;
}Решение задачи: «Запись и чтение из файлов»
textual
Листинг программы
#include <iostream>
#include <locale.h>
#include <string.h>
#include<conio.h>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
void wrtnfile(char*, char*);
void rdfile(char*);
cout << "vvedit FIO" << endl;
char nmfile[] = "myfile.txt";
char line[250];
while (fgets(line, 250, stdin))
wrtnfile(line, nmfile);
rdfile(nmfile);
int x;
getch();
return 0;
}
void wrtnfile(char *line, char *namefile)//запись
{
short el = 0;
FILE *ptr;
ptr = fopen(namefile, "a");
while (line[el] && putc(line[el], ptr) != EOF) ++el;
fclose(ptr);
}
void rdfile(char *namefile)//чтение
{
short sym = 0;
char line[250];
FILE *ptr;
ptr = fopen(namefile, "r");
while (fgets(line, 250, ptr)) {
cout << line;
char*sp = strtok(line, ", ");
while (sp) {
cout << sp[0];
sp = strtok(NULL, ", ");
}
cout << "\nDovjuna: " << strlen(line) << endl << endl;
}
fclose(ptr);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
<iostream>для работы с потоками ввода-вывода;<locale.h>для работы с локалью;<string.h>для работы со строками;<conio.h>для работы с клавиатурой и курсором;<stdio.h>для работы с файлами;<stdlib.h>для работы с функциями библиотеки С.
- Создаем функцию void wrtnfile(char, char) для записи в файл.
- Создаем указатель на файл с помощью
FILE *ptr = fopen(namefile,a);. - Записываем данные в файл с помощью цикла
whileи функцииputc. - Закрываем файл с помощью
fclose(ptr);.
- Создаем указатель на файл с помощью
- *Создаем функцию void rdfile(char) для чтения из файла**.
- Создаем указатель на файл с помощью
FILE *ptr = fopen(namefile,r);. - Читаем данные из файла с помощью цикла
whileи функцииfgets. - Разбиваем строку на подстроки с помощью функции
strtok. - Выводим каждую подстроку на экран с помощью
cout << sp[0];. - Выводим длину строки с помощью
cout <<\nDovjuna:<< strlen(line) << endl << endl;. - Закрываем файл с помощью
fclose(ptr);.
- Создаем указатель на файл с помощью
- В функции main() создаем строку-путь к файлу с помощью
char nmfile[] =myfile.txt;.- Записываем данные в файл с помощью цикла
whileи функцииwrtnfile, передавая в нее строку из стандартного ввода. - Читаем данные из файла с помощью функции
rdfile, передавая в нее путь к файлу. - Ожидаем нажатия клавиши с помощью
getch().
- Записываем данные в файл с помощью цикла
- Программа завершается возвратом значения 0, что означает успешное выполнение.