С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
1

Чтение из файла в массив до разделителя

06.12.2012, 01:23. Показов 5316. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
#define STOP "---"
main ()
{
int nt[100],i=0;
ifstream f; f.open("kurs.txt");
while (!f.eof())
{f>>nt[i]; cout<<nt[i]<<endl; i++;}
cin.get();
f.close();
}
это программа которая читает данные из файла в массив
файл kurs.txt:
1
2
3
---
Ivanov
Petrov
Sidorov
---
подскажите пожалуйста, как измнить программу чтоб она читала данные в массив int только до разделителя?

Добавлено через 33 минуты
сделал. выкладываю текст програмы, может кому то пригодится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
#define STOP "---"
main ()
{
int nt[100],i=0;
ifstream f; f.open("kurs.txt");
while (!f.eof()&&f>>nt[i]!=0)
{cout<<nt[i]<<endl; i++;}
cin.get();
f.close();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2012, 01:23
Ответы с готовыми решениями:

Чтение элементов из текстового файла без символа-разделителя между ними
Задача такая: для файла, содержащего 25 элементов, найти квадраты элементов и записать их в другой...

Чтение текстового файла с запятой в качестве разделителя
Здравствуйте! Помогите, пожалуйста, может кто-нибудь сталкивался с такой проблемой. Изображение у...

Массив без разделителя в конце
Есть массив такого вида Array ( =&gt; user1 =&gt; user2 =&gt; user3 =&gt; ) как добавить разделитель в...

Чтение из файла в массив
//--------------------------------------------------------------------------- #include &lt;clx.h&gt;...

3
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.12.2012, 01:39 2
venom_, вам, как минимум, надо считывать тогда в string (или массив char), и, если число, то переделывать в int, иначе получите неадекватное поведение программы. Думаю, это вам будет сложно, поэтому советую сделать так: в файле в первой строке содержится число, равное количеству нужных элементов, например так:
Код
3
1
2
3
Ivanov
Petrov
Sidorov
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.12.2012, 01:58 3
ф-ция getline() http://www.cplusplus.com/reference/string/getline/
0
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 8
08.12.2012, 23:43  [ТС] 4
вот какая прога получилась:
может ее можно было сделать проще? буду очень признателен за ответ
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
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#define MAXTIT 40
#define MAXCOLS 20
#define STOP "-"
main()
{
struct row {char value[64];};
struct integer {char title[MAXTIT];int value[50];} nt[MAXCOLS];
struct real {char title[MAXTIT];double value[50];} ft[MAXCOLS];
struct stringn {char title[MAXTIT];struct row str[50];} chn[MAXCOLS];
struct string {char title[MAXTIT];struct row str[50];} ch[MAXCOLS];
char tmp1[60];int i=0,nti=0,n,l;
cout<<"Љ®«"<<"ђп¤"<<"‡**з"<<endl<<endl;
ifstream f; f.open("kurs.txt");
while (!f.eof())
 {
f.get(tmp1[0]);
switch (tmp1[0]){
 
 
case 'i':f.getline(nt[i].title,sizeof(nt[i].title));
cout<<nt[i].title<<endl;
f.getline(tmp1,sizeof(tmp1));
while (strcmp(tmp1,STOP))
 {
nt[i].value[nti]=atoi(tmp1);
cout<<i<<" "<<nti<<" "<<nt[i].value[nti]<<endl;
nti++; f.getline(tmp1,sizeof(tmp1));
 }
nti=0; i++; break;
 
 
case 'f':f.getline(ft[i].title,sizeof(ft[i].title));
cout<<ft[i].title<<endl;
f.getline(tmp1,sizeof(tmp1));
while (strcmp(tmp1,STOP))
 {
ft[i].value[nti]=atof(tmp1);
cout<<i<<' '<<nti<<' '<<ft[i].value[nti]<<endl;
nti++; f.getline(tmp1,sizeof(tmp1));
 }
nti=0; i++; break;
 
 
case 'c':f.getline(ch[i].title,sizeof(ch[i].title));
cout<<ch[i].title<<endl;
f.getline(ch[i].str[nti].value,sizeof(ch[i].str[nti].value));
while (strcmp(ch[i].str[nti].value,STOP))
 {
cout<<i<<' '<<nti<<' '<<ch[i].str[nti].value<<endl; nti++;
f.getline(ch[i].str[nti].value,sizeof(ch[i].str[nti].value));
 }
nti=0;i++;break;
 
 
case 'n':f.getline(chn[i].title,sizeof(chn[i].title));
cout<<chn[i].title<<endl;
f.getline(tmp1,sizeof(tmp1));
n=atoi(tmp1);
f.getline(tmp1,sizeof(tmp1));
while (strcmp(tmp1,STOP))
 {
for (l=0;l<n;l++) chn[i].str[nti].value[l]=tmp1[l];
chn[i].str[nti].value[l]=NULL;
l=0;
cout<<i<<' '<<nti<<' '<<chn[i].str[nti].value<<endl;
f.getline(tmp1,sizeof(tmp1));nti++;
 
 }
nti=0;i++;break;
 
}
 }
f.close();
cin.get();
}
файл kurs.txt
iNumber
1
2
3
-
fSalary
15678.87
16450.8
20089.45
-
iBirth
1986
1987
1989
-
nJob
5
Manager
Ingeneer
Director
-
cName
Ivanov
Petrov
Sidorov
-
Добавлено через 5 минут
обратите внимание на маленькие значения MAXCOLS 60 (єто число колонок) и количества строк 50- согласитесь маловато для базы данных но нельзя сделать больше почему то (ошибка Array size too large)
0
08.12.2012, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2012, 23:43
Помогаю со студенческими работами здесь

Чтение из файла в массив
Здравствуйте, уважаемые программисты. Подскажите, пожалуйста. Есть текстовый файл примерно...

Чтение из файла в массив
Подскажите пожалуйста, почему не считывается текст из файла в массив? using (StreamReader sr = new...

Чтение из файла в массив
Есть текстовый файл со следующим форматом &quot;foo&quot;=&quot;bar&quot; &quot;baz&quot;=&quot;quux&quot; Необходимо его загнать в...

Чтение из файла в массив
Нужно прочитать файл, в нем несколько целых чисел, разделенных пробелами. Пользователь вводит...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru