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

не записывает текст в .txt - C++

Восстановить пароль Регистрация
 
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 14:20     не записывает текст в .txt #1
Всем привет, прошу помощи еще раз..

Программа берет текст из Input.txt(если файла нет, выдать сообщение), шифрует его методом простой замены, результат кладет в Output.txt.
Дешифрование происходит так: берется зашифрованный текст из Output.txt(если в файле нет инфы, выдать сообщение), расшифровывается, результат попадает в Deshifr.txt. Все работает через простое меню.

Проблема в следующем: по какой-то причине не видит файл Input.txt с исходным текстом(выдается соответствующее сообщение), соответственно шифрование не происходит.Помогите разобраться, пожалуйста..

untitled:

Заголовочные:
deshifr.h:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
#ifndef DESHIFR_H
#define DESHIFR_H
 
class deshifr
{
public:
    deshifr();
};
 
#endif // DESHIFR_H

shifr.h:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
#ifndef SHIFR_H
#define SHIFR_H
 
class shifr
{
public:
    shifr();
};
 
#endif // SHIFR_H

Исходники:
main.cpp:
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<iostream>
#include<conio.h>
#include<fstream>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<shifr.h>
#include<deshifr.h>
 
using namespace std;
 
void shifr()
{
    char kluch[4]={'\0'};
    cout << "Enter the key";
    cin >> kluch;
 
 
    cout<<"Key: "<< kluch;
    ifstream in("Input.txt",ios::in);
    ofstream out("Output.txt",ios::out);
    if(!in)
    {
        cout<<"\nThere is no file for coding (Input.txt).";
        cout<<"\n\nPres any key for exit.";
        _getch();
        exit(1);
    }
    char temp,buf=NULL;
    int n=strlen(kluch);
    int j,i=0;
    for(int k=0;k<n; k++)
 
 
        while(!in.eof())
        {
            in.read((char*)&buf,sizeof(buf));
            if(buf==NULL)break;
 
 
            j=fmod(float(n),float (i));
            temp=buf^kluch[j];
            out.put(temp);
            i++;
            buf=NULL;
        }
    in.close();
    out.close();
    cout<<"\nThe text is in a file Output.txt";
    _getch();
}
 
void deshifr()
{
    char kluch[4]={'\0'};
    ifstream in("Output.txt");
    ofstream out("Deshifr.txt");
    if(!in)
    {
        cout<<"There is no file Output.txt";
        _getch();
        exit(1);
    }
    cout<<"Enter a key: ";
    cin>>kluch;
    char temp,buf=NULL;
    int n=strlen(kluch);
    int j,i=0;
 
 
 
    while(!in.eof())
    {
        in.read((char*)&buf,sizeof(buf));
        if(buf==NULL)break;
        //j=fmod(i,n);
        j=fmod(float(n),float(i));
        temp=buf^kluch[j];
        out.write((char*)&temp,sizeof(temp));
        i++;
        buf=NULL;
    }
 
    in.close();
    out.close();
    cout<<"The decoded text is in the file Deshifr.txt";
    _getch();
    }
 
int main()
{
    int input;
 
    cout << "1. Sifrovanie";
    cout << " 2. Deshifrovanie";
 
    cin >> input;
 
    switch(input){
    case 1:
        shifr();
        break;
    case 2:
        deshifr();
        break;
    }
    cin.get();
}

shifr.cpp:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
#include "shifr.h"
 
shifr::shifr()
{
}

deshifr.cpp:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
#include "deshifr.h"
 
deshifr::deshifr()
{
}


Добавлено через 5 минут
Мои предположения: неверно указан путь к файлу, хотя я пробовал по всякому, и закидывать в одну дирректорию, и прописывать путь полностью, не помогает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 14:20     не записывает текст в .txt
Посмотрите здесь:

C++ Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива.
C++ отладить программу на языке С++, которая считывает из файла a.txt строку и записывает её в файл b.txt в обратном порядке
Написать программу, которая считывает текст из файла и записывает в новый файл слова, короче 5 букв C++
Написать программу, которая считывает текст из файла и записывает в другой файл C++
Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.09.2013, 14:20     не записывает текст в .txt #2
Цитата Сообщение от GK104 Посмотреть сообщение
Проблема в следующем: по какой-то причине не видит файл Input.txt с исходным текстом(выдается соответствующее сообщение), соответственно шифрование не происходит.Помогите разобраться, пожалуйста..
А он там точно есть? Чем компилишь, куда Input.txt кладешь?
VasgGV
0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 12
04.09.2013, 14:23     не записывает текст в .txt #3
попробуй жестко задавать путь к файлу... у меня же же фигня была сохраняет фиг знает куда.
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 14:27  [ТС]     не записывает текст в .txt #4
Nekto, его вроде как вручную нужно создавать, так как при запуске конечного файла, создается сам только Output.txt, но он естественно пустой.Работаю в QT creator.Файл создавал вручную, указывал имя и "Input.txt" и просто "Input", разницы нет.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.09.2013, 14:28     не записывает текст в .txt #5
Цитата Сообщение от GK104 Посмотреть сообщение
Nekto, его вроде как вручную нужно создавать, так как при запуске конечного файла, создается сам только Output.txt, но он естественно пустой.Работаю в QT creator.Файл создавал вручную, указывал имя и "Input.txt" и просто "Input", разницы нет.
Так наполни же его чем-нибудь.
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 14:29  [ТС]     не записывает текст в .txt #6
VasgGV, пробовал, не получается.В начальных исходниках(до ужаса кривых), было что-то вроде этого:
C++
1
2
ifstream in("E:\Input.txt");
ofstream out("Output.txt");
То есть, задавался путь к файлу, но я пробовал так же прописывать и результат 0.

Добавлено через 18 секунд
Nekto, наполнял, я же не настолько тупой)
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.09.2013, 14:30     не записывает текст в .txt #7
Цитата Сообщение от GK104 Посмотреть сообщение
VasgGV, пробовал, не получается.В начальных исходниках(до ужаса кривых), было что-то вроде этого:
C++
1
2
ifstream in("E:\Input.txt");
ofstream out("Output.txt");
То есть, задавался путь к файлу, но я пробовал так же прописывать и результат 0.
Двойной слеш надо, если мне память не изменяет.
Положи рядом с екзешником или добавь в проект. Запусти не через IDE, а напрямую екзешку.
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 15:11  [ТС]     не записывает текст в .txt #8
Nekto, нет, одна должна быть
рядом клал, тоже ничего..
ща добавил в проект, добавился он у меня в "другие файлы"
что-то ничего не пойму прям..

Добавлено через 29 минут
убрал в этом коде значит "ios::in, ios::out"
C++
1
2
ifstream in("Input.txt",ios::in);
ofstream out("Output.txt",ios::out);
теперь все как бы нормально, после выбора операции шифрования и ввода ключа, выдается сообщение, что зашифрованный текст ждет вас в Output.txt, но текста там нет, файл пуст. Так же если убрать Input.txt из диры с проектом, но он все равно как бы "видит" его, хоть к нему пути никакого не прописано, получается не срабатывает механизм детектирования файла по каким-то причинам
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.09.2013, 15:45     не записывает текст в .txt #9
Сделай отладочный вывод на экран, содержимого исходного файла, что из него читается.
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 15:53  [ТС]     не записывает текст в .txt #10
все я разобрался кажись
код действительно оказался говнокодом, не знаю кто его писал и вообще что курил, но зачем он сделал пустые классы функций я не понимаю, когда все функции и так были описаны в main.

сейчас имею следующее:
функция шифрования работает, файл видит, результат записывает.При запуски дешифрования получаю appcrash с какого-то..
еще вот это место смущает:
C++
1
j=fmod(float(n),float(i));
компилятор предупреждает о потере данных..Если сделать так "j=fmod(n,i); то выбивает ошибку о несоответствии типов чтоли..
сейчас код весь выглядит так:
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include<iostream>
#include<conio.h>
#include<fstream>
#include<string.h>
#include<stdlib.h>
#include<math.h>
 
using namespace std;
 
void shifr()
{
    char kluch[4]={'\0'};
    cout<<"Key: "<<kluch;
    cin >> kluch;
    ifstream in("Input.txt");
    ofstream out("Output.txt");
  if(!in)
  {
  cout<<"\nThere is no filefor coding (Input.txt).";
  cout<<"\n\nPres any key for exit.";
  _getch();
  exit(1);
  }
  char temp,buf=NULL;
  int n=strlen(kluch);
  int j,i=0;
  for(int k=0;k<n; k++)
  while(!in.eof())
  {
  in.read((char*)&buf,sizeof(buf));
  if(buf==NULL)break;
  j=fmod(float(i),float(n));
  temp=buf^kluch[j];
  out.put(temp);
  i++;
  buf=NULL;
  }
  in.close();
  out.close();
  cout<<"\nThe text is in a file Output.txt";
  _getch();
}
 
void deshifr()
{
    char kluch[4]={'\0'};
    ifstream in("Output.txt");
    ofstream out("Deshifr.txt");
    if(!in)
    {
        cout<<"There is no file Output.txt";
        _getch();
        exit(1);
    }
    cout<<"Enter a key: ";
    cin>>kluch;
    char temp,buf=NULL;
    int n=strlen(kluch);
    int j,i=0;
 
 
 
    while(!in.eof())
    {
        in.read((char*)&buf,sizeof(buf));
        if(buf==NULL)break;
        //j=fmod(i,n);
        j=fmod(float(n),float(i));
        temp=buf^kluch[j];
        out.write((char*)&temp,sizeof(temp));
        i++;
        buf=NULL;
    }
 
    in.close();
    out.close();
    cout<<"The decoded text is in the file Deshifr.txt";
    _getch();
    }
 
int main()
{
    int input;
 
    cout << "1. Sifrovanie";
    cout << " 2. Deshifrovanie";
 
    cin >> input;
 
    switch(input){
    case 1:
        shifr();
        break;
    case 2:
        deshifr();
        break;
    }
    cin.get();
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.09.2013, 16:08     не записывает текст в .txt #11
Вместо fmod используй целочисленные операции
C++
1
j = n % i;
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 16:15  [ТС]     не записывает текст в .txt #12
kazak, заменил, после ввода ключа сразу appcrash

Добавлено через 3 минуты
вот че написало
Код
Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.09.2013, 16:35     не записывает текст в .txt #13
Кстати, нужно i % n.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2013, 16:49     не записывает текст в .txt
Еще ссылки по теме:

C++ В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt
Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt C++
Программа записывает русские слова в txt, но они отображаются кракозябрами C++

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

Или воспользуйтесь поиском по форуму:
GK104
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 64
04.09.2013, 16:49  [ТС]     не записывает текст в .txt #14
kazak, все, теперь абсолютно все пахает спасибо большое!
Yandex
Объявления
04.09.2013, 16:49     не записывает текст в .txt
Ответ Создать тему
Опции темы

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