Форум программистов, компьютерный форум CyberForum.ru

ввод-вывод данных - C++

Восстановить пароль Регистрация
 
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 00:29     ввод-вывод данных #1
Доброго времени суток! Начала изучать С++ и запуталась в простейшей программке
Буду признательна за совет
Задача: считать два числа из одного файла и записать их произведение в другой файл.
Скомпилировала в VS. Никаких ошибок не выдалось, НО после запуска ехе'шника в output.txt оказывается число 687194768, какие бы числа в исходном файле не находились. Мне не понятно, что происходит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# include <fstream>
 
using namespace std;
 
 
void main ()
{
    ifstream inFile ("input.txt");
    ofstream outFile ("output.txt");
 
    int p, n;
    inFile >> p >> n;
    outFile << p * n;
 
    inFile.close();
    outFile.close();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 00:29     ввод-вывод данных
Посмотрите здесь:

C++ ПОшаговый ввод данных и вывод результатов
Ввод-вывод данных C++
C++ ввод/вывод данных C++
C++ Ввод и вывод данных,оператор присваивания
Ввод и вывод данных класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.11.2012, 00:35     ввод-вывод данных #2
jumi, проверь, что файл открывается. И самое главное, выведи ты считанные из файла числа тупо на консоль, чтобы посмотреть, что вообще считалось, вместо того, чтобы гадать. Познакомься с отладкой.
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
29.11.2012, 01:57     ввод-вывод данных #3
Когда выдиляете память под элемент задайте ему сначала начальные значения, а то кто его знает какое там значени, по этому могут возникать также ошибки.

Добавлено через 10 минут
Да здесь чуть-чуть корекцыя нужна была. Вот кодик програмки


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <fstream.h>
#include <conio.h>
#include <iostream.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{  ifstream inFile ("input.txt");
    ofstream outFile ("output.txt");
 
    int p=3, n=2; //как видите начальные значения
    int h=0; //аналогично выше
 
 
    h=p*n; //умножаем
    outFile << h;  //выводим в файл
    inFile >> p >> n;  //ввод из файла поскольку мы помещаем даные в поток, а значит вводим их
    cout<<h<<endl; //выводим наш результат с преведущей записю в файлик
    getch(); //приостанавливаем прогу дабы прочитать значение
 
 
    inFile.close();
    outFile.close();
 
        return 0;
}
//---------------------------------------------------------------------------
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 01:59  [ТС]     ввод-вывод данных #4
Да выводила уже в консоль. Тот же ужас. Вместо моих чисел из файла берется какое то странное значение -858993460. И файл открывается, если имеется ввиду открытие самим пользователем.
По прежнему не понимаю.
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
29.11.2012, 02:01     ввод-вывод данных #5
В чем работаете VS C++ || C++Builder 6?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.11.2012, 02:01     ввод-вывод данных #6
Цитата Сообщение от jumi Посмотреть сообщение
И файл открывается, если имеется ввиду открытие самим пользователем.
Нет, ты должна проверить, что файл открывается потоком. То есть, программой, а не пользователем. Еще было бы хорошо знать, как у тебя там числа записаны. ЧТо за формат.
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 02:05  [ТС]     ввод-вывод данных #7
Джек.
Спасибо большое. Сейчас буду разбираться.

Добавлено через 1 минуту
Цитата Сообщение от Джек Посмотреть сообщение
В чем работаете VS C++ || C++Builder 6?
VS C++
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
29.11.2012, 02:05     ввод-вывод данных #8
Цитата Сообщение от jumi Посмотреть сообщение
Да выводила уже в консоль. Тот же ужас. Вместо моих чисел из файла берется какое то странное значение -858993460. И файл открывается, если имеется ввиду открытие самим пользователем.
По прежнему не понимаю.

Попробуйте скопировать мой код и будет ли другой ефект.

Сори если получилась какбы тавтология цитат (поспешил).
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 02:09  [ТС]     ввод-вывод данных #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Нет, ты должна проверить, что файл открывается потоком. То есть, программой, а не пользователем. Еще было бы хорошо знать, как у тебя там числа записаны. ЧТо за формат.
Извините, а вы не могли бы пояснить, как это проверить. А то кроме, пошаговой отладки мне на ум ничего не приходит.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.11.2012, 02:10     ввод-вывод данных #10
Цитата Сообщение от jumi Посмотреть сообщение
Извините, а вы не могли бы пояснить, как это проверить.
У потока есть метод is_open. Хотя, если бы он не открылся, то навряд ли, операторы >> отработали тихо. Какое содержимое у файла?
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 02:27  [ТС]     ввод-вывод данных #11
Цитата Сообщение от Джек Посмотреть сообщение
Попробуйте скопировать мой код и будет ли другой ефект.

Сори если получилась какбы тавтология цитат (поспешил).
Я попробовала. Не компилируется, ибо не может открыть "fstream.h". Может у меня нехватка каких то библиотек и отсюда все беды?

Добавлено через 2 минуты
Цитата Сообщение от Vourhey Посмотреть сообщение
У потока есть метод is_open. Хотя, если бы он не открылся, то навряд ли, операторы >> отработали тихо. Какое содержимое у файла?
1
3

если речь о инпуте
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.11.2012, 02:34     ввод-вывод данных #12
Цитата Сообщение от jumi Посмотреть сообщение
ибо не может открыть "fstream.h"
Потому что нужно fstream открывать без .h

Добавлено через 4 минуты
Все работает прекрасно:
vourhey@vourhey-desktop ~/Documents/projs/cpp $ cat > input.txt
1
2
vourhey@vourhey-desktop ~/Documents/projs/cpp $ cat > main.cpp
#include<iostream>
#include<fstream>

int main()
{
std::ifstream file("input.txt");
if(!file.is_open())
return;
int a, b;
file>>a>>b;
std::cout<<a<<" "<<b<<std::endl;
}
vourhey@vourhey-desktop ~/Documents/projs/cpp $ g++ -fpermissive main.cpp
main.cpp: In function ‘int main()’:
main.cpp:8:1: warning: return-statement with no value, in function returning ‘int’ [-fpermissive]
vourhey@vourhey-desktop ~/Documents/projs/cpp $ ./a.out
1 2
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 02:45  [ТС]     ввод-вывод данных #13
[QUOTE=Vourhey;3771574]Потому что нужно fstream открывать без .h

Ваша правда. У меня же нет заголовочных файлов.
Но счастья всё равно нет, потому что компилятор ругается на отсутствие файла conio, и выдает еще уйму всяческих ошибок.

Завидую вам, что у вас всё работает)) Не понятно только, почему у меня не работает (
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.11.2012, 03:20     ввод-вывод данных #14
Цитата Сообщение от jumi Посмотреть сообщение
файла conio
Да зачем он тебе? Он вообще не нужен. Убери его. И getch убери.

Добавлено через 2 минуты
Цитата Сообщение от jumi Посмотреть сообщение
Не понятно только, почему у меня не работает (
Блин, я тебя уже спрашивал, открывается ли у тебя файл. Ответ так и не был получен. Потому что, если файл не откроется, от будет мусор в переменных. Потому что код у тебя правильный. Один вариант - ты неправильно задаешь путь к файлу input.txt.

Добавлено через 2 минуты
Я вот даже ничего в твоем коде не менял. И все прекрасно работает. Ты просто не туда положила файл. Не забывай, что ты в студии работаешь. Проверь текущую директорию при запуске экзешника. У тебя input.txt не открывается просто.
Если все равно не могешь путь указать, то положи файл в корень диск и укажи путь явно целиком, все заработает.
jumi
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 7
29.11.2012, 03:54  [ТС]     ввод-вывод данных #15
Vourhey,
я балда)) Он действительно не в той папке лежал. Я понадеялась, что студия сообразит, что он в папке с проектом, а надо было прям под бок к exe'шнику.

Спасибо за терпение и помощь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 21:39     ввод-вывод данных
Еще ссылки по теме:

C++ ввод и вывод данных в файл
Ввод и вывод данных в файл C++
Ввод/вывод данных в/из файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2012, 21:39     ввод-вывод данных #16
Цитата Сообщение от Vourhey Посмотреть сообщение
Да зачем он тебе? Он вообще не нужен. Убери его. И getch убери.
Почему он не нужен. Автор хочет сделать паузу
Цитата Сообщение от Джек Посмотреть сообщение
getch(); //приостанавливаем прогу дабы прочитать значение
Это неплохая вещь, если писать на визуал студиа.

Добавлено через 24 секунды
Совету для виндовс
C++
1
std::system("pause");
Yandex
Объявления
06.12.2012, 21:39     ввод-вывод данных
Ответ Создать тему
Опции темы

Текущее время: 08:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru