Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
1

Считать данные из файла, строки с символом ";" - разбить

11.05.2014, 22:04. Просмотров 858. Ответов 3
Метки нет (Все метки)


Программа должна считать данные из файла, строки с символом ";" разбить:
Кликните здесь для просмотра всего текста
(Пример)
"Hello;World
!"
=
"Hello
World
!"

А затем записать обратно в файл.
Сделал программу:
Кликните здесь для просмотра всего текста
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
//---------------------------------------------------------------------------
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
 
#pragma argsused
//Modules:
//Language Module: (buf=25600;syntax:"Print(label);")
char* Print(const char* text)
{
char bufPrint[25600];
CharToOem(text, bufPrint);
cout<<bufPrint;
delete bufPrint;
return 0;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
cout<<"LineDiv 1.0\nMade by Prog63 Corp. 2013-2014\nAll rights reserved\n"<<endl;
char* FileInName="file1.dat";
char* FileOutName="file2.dat";
if (!FileExists(FileInName)){Print("Ошибка !\nФайл \"");Print(FileInName);Print("\" не найден !");getch();exit(0);}
Print("Имя файла :");Print(FileInName);
Print("\nСчитывание файла (1 из 3)...");
int FileIn=FileOpen(FileInName,fmOpenRead);
int finsize=FileSeek(FileIn,0,2);
char *BufferIn=new char[finsize];
FileSeek(FileIn,0,0);
FileRead(FileIn, BufferIn, finsize);
FileClose(FileIn);
Print("\n Файл считан. (");cout<<finsize;Print(" симв.)");
Print("\nСтроковое деление (2 из 3)...");
int CreateLinesCount=0,LinesCount=0;
for (int reg=0;reg<=finsize;reg++){if ((int)BufferIn[reg]==59){BufferIn[reg]=(char)10;CreateLinesCount+=1;} if ((int)BufferIn[reg]==10){LinesCount+=1;}}
Print("\n Строк создано :");cout<<CreateLinesCount;
Print("\n Всего строк   :");cout<<LinesCount;
Print("\nСоздание файла (3 из 3)...");
//if (FileExists(FileOutName)){std:remove(FileOutName);}
//std:remove(FileOutName);
ofstream FileOut;
FileOut.open(FileOutName,ios::app);
int regold=0;
for(int reg=0;reg<=finsize;reg++){if((int)BufferIn[reg]=='\n'){char* BufferOut=new char[reg-regold];
for(int reg2=0;reg2<reg-regold;reg2++){BufferOut[reg2]=BufferIn[reg2+regold];}
regold=reg;
FileOut<<BufferOut;
delete BufferOut;
}}
FileOut.close();
Print("\n Файл создан");
        return 0;
}
//---------------------------------------------------------------------------

Ошибок не выдает, но и не работает надлежащим образом:
Кликните здесь для просмотра всего текста

Например, вместо
C++
1
2
3
4
5
6
7
8
9
10
int Number1=0,Number2=0,reg1=0,NOD=1;
bool bool1=false,bool2=false;
cout<<"Vvedite 1 chislo:";cin>>Number1;
cout<<"Vvedite 2 chislo:";cin>>Number2;
if (Number1>Number2) reg1=Number1; else reg1=Number2;
for (int reg=1;reg<=reg1;reg++){
if (((Number1%reg==0)&&((Number2%reg)==0)))NOD=reg;
bool bool1=false,bool2=false;}
cout<<"NOD of "<<Number1<<" and "<<Number2<<" is "<<NOD;
getch();
(забил в файл свою программу как пример), выдает такую белиберду:
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
int Number1=0,Number2=0,reg1=0,NOD=1
 
 
bool bool1=false,bool2=false
 
ool bool1=false,bool2=false
cout<<"Vvedite 1 chislo:"
cin>>Number1alse,bool2=false
 
in>>Number1alse,bool2=false
cout<<"Vvedite 2 chislo:"
cin>>Number2alse,bool2=false
 
in>>Number2alse,bool2=false
if (Number1>Number2) reg1=Number1
 else reg1=Number2ool2=false
 
else reg1=Number2ool2=false
for (int reg=1ber2ool2=false
reg<=reg1reg=1ber2ool2=false
reg++){
1reg=1ber2ool2=false
if (((Number1%reg==0)&&((Number2%reg)==0)))NOD=reg
 
f (((Number1%reg==0)&&((Number2%reg)==0)))NOD=reg
bool bool1=false,bool2=falseber2%reg)==0)))NOD=reg
}
ol bool1=false,bool2=falseber2%reg)==0)))NOD=reg
cout<<"NOD of "<<Number1<<" and "<<Number2<<" is "<<NOD
 
out<<"NOD of "<<Number1<<" and "<<Number2<<" is "<<NOD
getch()NOD of "<<Number1<<" and "<<Number2<<" is "<<NOD

Бьюсь уже почти месяц

Заранее спасибо
0
Вложения
Тип файла: rar Programm.rar (222.9 Кб, 2 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2014, 22:04
Ответы с готовыми решениями:

Как считать данные с учетом знака переноса строки "\n" из файла *.txt
В файл .txt записывается текст из JTextArea в которую пользователь пишет что угодно и как угодно....

Разместить кнопочки "над" и "под" символом строки, не нарушая вертикального выравнивания символа относительно строки
родилась мысль создать собственный интерфейс для &lt;input type=&quot;number&quot;&gt; для однозначных чисел в виде...

Переписать из файла в новый файл все строки, заканчивающиеся символом "!"
Задание у меня такое (оно же название темы): Переписать из файла в новый файл все строки,...

Считать данные из файла и разбить строки на массив строк
Доброго времени суток. Возникла такая трабла - нужно считать следующий массив строк: Toyota Supra...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
3
return (true);
1973 / 1108 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
12.05.2014, 08:26 2
Я вроде говорил, что со строками будет удобнее
C++
1
2
3
4
5
6
7
8
 TStringList *text = new TStringList();
 TStringList *newtext = new TStringList();
 text->LoadFromFile("c:\\1.txt");
 newtext->Delimiter=';';
 newtext->DelimitedText=text->Text;
 newtext->SaveToFile("c:\\2.txt");
 delete text;
 delete newtext;
0
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
12.05.2014, 18:46  [ТС] 3
mimicria,
Я пробовал такой код, но он разбивает строки еще и по пробелам
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30873 / 20193 / 7877
Регистрация: 22.10.2011
Сообщений: 35,058
Записей в блоге: 6
12.05.2014, 20:01 4
prog63, поиском пользоваться не пробовал?

Не работает Delimiter
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2014, 20:01

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Считать данные из файла и получить подстроки, следующие за ";"
Мой файл имеет следующий вид day: 17 month: 5 year: 2015 Isubject of a court case:...

Даны текстовый файл "F" и строка "S". Получить все строки файла "F", содержащие в качестве фрагмента строку "S".
Плиз помогите написать прогу: Даны текстовый файл &quot;F&quot; и строка &quot;S&quot;. Получить все строки файла &quot;F&quot;,...

Считать данные из файла в массив предварительно выбрав его в стандартном окне виндоус "открыть файл"
Дан файл такого содержания: Таблица множителя решетки Угол, град. Множитель решетки ...

Дано слово, все символы стоящие на нечётных местах заменить символом "=", а на чётных местах символом ":"
Дано слово, все символы стоящие на нечётных местах заменить символом &quot;=&quot;, а на чётных местах...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.