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

Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
03.04.2012, 16:37     Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. #1
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;
    }
}
Заранее всем откликнувшимся спасибо
Миниатюры
Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 16:37     Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.
Посмотрите здесь:

C++ Дана строка s. Вывести эту строку с пробелами между всеми символами.
Как осуществить случайный ввод элементов матрицы, чтоб не вводить с клавиатуры C++
C++ Шифр Цезаря проблемы со знаками препинания
Ввод данных/выделение памяти (динамический символьный массив) C++
Структуры и ввод строк с пробелами с клавиатуры C++
Как в файл записать строку со всеми пробелами? C++
В тексте все слова разделены пробелами и знаками препинания C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
03.04.2012, 16:52     Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. #2
Цитата Сообщение от Kirill Losev Посмотреть сообщение
1) Как осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.?
getline

Добавлено через 2 минуты
Цитата Сообщение от Kirill Losev Посмотреть сообщение
input_a >> e;
е у вас указатель на char, просто указатель, без выделенной под него памяти. Так не делается, лучше сделайте e как char[256] например и в него читайте.
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
03.04.2012, 18:19  [ТС]     Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. #3
Gepar, спасибо. все работает
Yandex
Объявления
03.04.2012, 18:19     Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.
Ответ Создать тему
Опции темы

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