03.04.2012, 16:37. Просмотров 1455. Ответов 2
1) Как осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.?
2) И еще вопрос есть такой. Пытаюсь ввести данные из файла при помощи input.getline(string, size);, но компилятор уже когда надо выводить информацию на экран вместо всего, что надо выдает "Segmentation fault"(см. вложения). Что это такое и как от этого избавиться? Причем, если я строку сразу в массиве задаю или ввожу с клавиатуры(получается, что если не расправлюсь с 1) вопросом, то будет вводить с клавиатуры по одному слову), то программа работает. Далее привожу коды программы в рабочем состоянии и нерабочем. Ах да, и пришу в Geany под Ubuntu 10.04.
Рабочий:
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
| #include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
int main()
{
unsigned int size = 256;
char string[] = "String in array", *e;
unsigned int s = 0, c = 0;
ifstream input_a("/media/wind/forlabs/2_sem/l2/alfavit.txt");
while(!input_a.eof())
{
input_a >> e;
while(1)
{
s = strcspn(string, e);
if(s != strlen(string))
{
string[s] = '+';
c++;
}
else
{
s = 0;
break;
}
}
if(c == 0)
continue;
cout << "Cимвол " << e << " встречается в строке " << c << " раз." <<endl;
s = 0;
c = 0;
}
} |
|
И так не работает:
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
| #include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
int main()
{
unsigned int size = 256;
char string[size], *e;
unsigned int s = 0, c = 0;
ifstream input_a("/media/wind/forlabs/2_sem/l2/alfavit.txt");
ifstream input_s("/media/wind/forlabs/2_sem/l2/input.txt");
if(input_a.bad() || input_s.bad())
cout << "Файлы нерабочие, наверно!" << endl;
input_s.getline(string, size);
while(!input_a.eof())
{
input_a >> e;
while(1)
{
s = strcspn(string, e);
if(s != strlen(string))
{
string[s] = '+';
c++;
}
else
{
s = 0;
break;
}
}
if(c == 0)
continue;
cout << "Cимвол " << e << " встречается в строке " << c << " раз." <<endl;
s = 0;
c = 0;
}
} |
|
Заранее всем откликнувшимся спасибо