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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2017, 10:56   #1
kirillznatok
Новичок
Джуниор
 
Регистрация: 25.11.2017
Сообщений: 2
По умолчанию числа из .txt в массив через getline и atoi.

Нужно перенести числа из .txt в массив без побитового сдвига (>>) c использованием только getline и atoi.
нуждаюсь в помощи.
kirillznatok вне форума Ответить с цитированием
Старый 25.11.2017, 11:07   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

И в чем проблема?
waleri вне форума Ответить с цитированием
Старый 25.11.2017, 11:18   #3
kirillznatok
Новичок
Джуниор
 
Регистрация: 25.11.2017
Сообщений: 2
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
И в чем проблема?
Код:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	ifstream fin("INPUT.txt");
	ofstream fout("Output.txt");

	int* mas = new int[255];
	for (int i = 0; i < 255; i++)
	{
		mas[i] = 0;
	}
	int j = 0;
	while (!fin.eof())
	{
		char* buf = new char[255];
		fin.getline(buf, 255);

		for (int i = 0; i < 255; i++)
		{
			if (buf[i] == '\0')
			{
				break;
			}
			if (buf[i] == ' ')
			{
				j++;
			}
			else
			{
				if (mas[j] == 0)
				{
					mas[j] = atoi(buf + i);
				}
				fout << mas[j] << " ";
			}
		}
	}
}
некорректный вывод
kirillznatok вне форума Ответить с цитированием
Старый 25.11.2017, 14:29   #4
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Мне кажется, может быть ошибка в строке
Код:
		char* buf = new char[255];
		fin.getline(buf, 255);

		for (int i = 0; i < 255; i++)
		{
			if (buf[i] == '\0')
			{
				break;
			}
не могу найти описание метода getline, но по моей логике он просто читает символы по ссылке в buf, и символ \0 может и не подставляет.
Во всяком случае, по-моему есть два getline: функция работы с файлами и метод для входного текстового потока.

Попробуйте не решать всю задачу, а сделать только чтение файла и выборку чисел.
СтудПом вне форума Ответить с цитированием
Старый 25.11.2017, 15:01   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
не могу найти описание метода getline
А вы пробовали? http://en.cppreference.com/w/cpp/io/...stream/getline
p51x на форуме Ответить с цитированием
Старый 25.11.2017, 15:38   #6
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А вы пробовали?
Спасибо, попробовал
СтудПом вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дан двумерный массив пользователь вводит натуральные числа,массив размером N на M .Все числа из которых можно извлечь корень извлекаются все числа меньше нуля заменяются их модулем qqq`` Паскаль, Turbo Pascal, PascalABC.NET 9 02.10.2017 17:11
Как заполнить циклично строки через getline? Вероника99 Помощь студентам 6 30.10.2015 07:54
массив из N целых положительных чисел. Определить наименьшую цифру у каждого числа. через подпрограмму ( Free Pascal ) Алексей НТ Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2012 19:19
Открыть .txt файл через OpenDialog Dissembler7 Помощь студентам 2 07.04.2012 21:07
Открывание .txt через WIN32 chev-91 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 27.05.2011 12:07