Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2016, 22:20   #1
vasil7799
Новичок
Джуниор
 
Регистрация: 29.08.2016
Сообщений: 1
По умолчанию Помогите чтение файла

Здрасвтуйте! Нужна ваша помощь!
как вытащить из файла 2-а чаровских массива и интовое значение одно! и записать это в обект класса! например имеем:

Женя Соколов 36

и записать по очереди в

name, surname, age
vasil7799 вне форума Ответить с цитированием
Старый 29.08.2016, 22:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А вы вообще пробовали их прочитать? Ну, например, потоком >> ...
p51x вне форума Ответить с цитированием
Старый 30.08.2016, 06:24   #3
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Может, вот это:
#include <stdio.h>
fgets (FILE *);
fgets (FILE *);
fscanf (FILE *, "%i", &age);

Правда, я не уверен, т. к. таких команд не применял и в синтаксисе не уверен. Строки не приходилось читать. Нужно HELP смотреть.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 30.08.2016, 10:20   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Можно прочитать всю строку, а потом программо разделить на части по спецсимволу пробел (" ") или попробуй так (обрати внимание, что данные записаны в строчку, но тип их один и тот же, - а тебе надо разный. Попробуй модифицировать программу под себя). Это чужой пример, а тебе надо только часть кода где отмечено: " // Чтение из файла INPUT.txt и вывод на экран ".

Я точно не уверен будет ли работать, - НУ ПРОБУЙ.



Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";

	int S[200];
	for (int i = 0; i < 200; i++)
	{
		S[i] = 0;
	}

	int N, M, k;
	cout << "Введите N: ";
	cin >> N;
	cout << "Введите M: ";
	cin >> M;

	// Запись в файл INPUT.txt
	file = fopen(fname1, "w");
	for (int i = 0; i < N-1; i++)
	{
		fprintf(file, "%i ", i);
	}
	fprintf(file, "%i", (N-1));
	fclose(file);
	///////////////

	// Чтение из файла INPUT.txt и вывод на экран		
	file = fopen(fname1, "r");
	fseek(file, 0, SEEK_SET);
	cout << "\nИсходный массив чисел, записанный в INPUT.txt:\n";
	k = 0;
	while (!feof(file))
	{
		fscanf(file, "%i", &S[k]);        	// Чтенеие из INPUT.txt			
		cout << " " << S[k];
		k++;
	}
	fclose(file);
	/////////////////////////////////
	
	// Замена на значений -1
	cout << "\n\nБыла сделана замена М-раз\n";
	srand(time(NULL));
	while (M > 0)
	{
		k = rand() % N;
		S[k] = -1;
		M--;
	}

	// Запись в файл OUTPUT.txt
	file = fopen(fname2, "w");
	for (int i = 0; i < N - 1; i++)
	{
		fprintf(file, "%i ", S[i]);
	}
	fprintf(file, "%i", S[N-1]);
	fclose(file);
	
	// Чтение из файла OUTPUT.txt и вывод на экран		
	file = fopen(fname2, "r");
	fseek(file, 0, SEEK_SET);
	cout << "\nРезультирующий массив чисел, записанный в OUTPUT.txt:\n";
	k = 0;
	while (!feof(file))
	{
		fscanf(file, "%i", &S[k]);        	// Чтенеие из OUTPUT.txt			
		cout << " " << S[k];
		k++;
	}
	fclose(file);
	/////////////////////////////////
	
	printf("\n\nЯ ВСЕ!  Для выхода нажми любую клавишу...");
	if (!_getch()) _getch();
	return 0;
}

Особенно смотри в сами файлы OUTPUT и INPUT и сравнивай с тем, что вывело на экран (одинаково ли?).
А что будет если M>N?


дОЛЖНО ПОЛУЧИТСЯ ТАКОЕ



Последний раз редактировалось ura_111; 30.08.2016 в 10:28.
ura_111 вне форума Ответить с цитированием
Старый 30.08.2016, 10:42   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А можно писать молотком... Простите мой французский, может вы перестанете заниматься и советовать хе... , а просто попробуете прочитать через >> ?
p51x вне форума Ответить с цитированием
Старый 30.08.2016, 18:18   #6
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Я бы вообще стал читать посимвольно. А при встрече пробела – переходить к следующей переменной. Правда, меня вводят в ступор строки переменной длины... Но вроде бы класс CString умеет с ними работать? Там просто операция '+' используется для добавления символа к строке. Я помню, в учебнике так написано.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 30.08.2016, 18:39   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вместо стандартного использовать костыли и майкрософтское старье... Впрочем для вас это вполне нормально, учитывая ваши темы...

П.С. По секрету std::string тоже умеет +
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла pinkiller Общие вопросы C/C++ 3 07.01.2012 07:48
Чтение файла Farrel Общие вопросы C/C++ 2 20.02.2011 14:19
чтение файла legendary Общие вопросы Delphi 5 26.08.2010 07:32
чтение из файла Sparky Общие вопросы C/C++ 5 13.04.2010 18:47
[C++] чтение из файла proga. Помощь студентам 1 25.09.2009 23:28