0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 61
1

Считывание строки с клавиатуры посимвольно и последующий вывод

29.07.2017, 12:14. Показов 7888. Ответов 3
Метки нет (Все метки)

Необходимо считать строку посимвольно, до тех пор пока не будет введен пробел. Проблема в том, что когда вывожу массив символов, который хранит строку выводятся символы "Н" в количестве на единицу больше, чем было введено в массив. Что в моем коде не так? В Си я совсем начинающий.

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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
void main()
{
    unsigned short int n = 0; //длина строки
    char *str; //строка
    char s; //текущий символ
    unsigned short int i;
    setlocale(LC_ALL, "RUS");
    puts("Введите строку посимвольно. Пробел - конец ввода.");
    do
    {
        s = getchar();
        if (s != 32)
        {   
            n++;
            str = (char*)malloc(sizeof(char)*n);
            *(str+n-1) = s;
        }
    } while (s != 32);
    for (i = 0; i < n; i++)
    {
        putchar(*(str + i));
    }
    getchar(); getchar();
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2017, 12:14
Ответы с готовыми решениями:

Вывод строки посимвольно
Ввести строку и вывести её посимвольно(каждый символ на новой строке). #include &lt;string.h&gt;...

Вывод в файл строки, считываемые с клавиатуры последовательно
Ниже приведён фрагмент кода. Который вывод в файл строки, считываемые с клавиатуры последовательно....

Ввод с клавиатуры бинарного дерева и последующий вывод
Добрый день. Необходимо составить программу, в которой будет производится ввод с клавиатуры...

Вывод строки посимвольно
Привет! Пытаюсь вывести строку посимвольно но не получается Компилятор TASM .MODEL small .STACK...

3
1020 / 770 / 244
Регистрация: 30.06.2015
Сообщений: 4,104
Записей в блоге: 42
29.07.2017, 16:14 2
Цитата Сообщение от Elsa Meier Посмотреть сообщение
Что в моем коде не так?
Много чего.. Самое главное это то, что ты постоянно создаёшь пустую строку, в которой ничего нет..
Вообще же, начинать садиться что-либо писать и конструировать надо только тогда, когда точно знаешь, что делаешь, иначе можно запросто отстрелить свои я...
0
41 / 41 / 15
Регистрация: 29.12.2016
Сообщений: 291
31.07.2017, 15:57 3
Elsa Meier, Если вы в дальнейшем не собираетесь использовать этот массив, для других операций, то он там и не нужен. Можно поступить попроще.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
/*
 * Необходимо считать строку посимвольно, до тех пор пока не будет введен пробел.
 */
int main() {
    int c;
 
        printf("Enter string: ");
        printf("\n");
 
        while((c = getchar()) != ' ')
        {
            putchar(c);
        }
 
    printf("\n");
    return 0;
}
Как видно на фото, после ввода пробела второе слово на печать не выводится, при дальнейшем нажатии "Enter", программа завершает свою работу.
Миниатюры
Считывание строки с клавиатуры посимвольно и последующий вывод  
0
Модератор
Эксперт С++
11994 / 9702 / 5874
Регистрация: 18.12.2011
Сообщений: 26,006
01.08.2017, 10:09 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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main()
{
    unsigned short int n = 0; //длина строки
    char *str; //строка
    char s; //текущий символ
    setlocale(LC_ALL, "RUS");
    str=(char*)malloc(sizeof(char));
    puts("Введите строку посимвольно. Пробел - конец ввода.");
    do
    {
        s = (char)getchar();
        if (s != 32)
        {   
            n++;
            str=(char*)realloc(str,sizeof(char)*n);
            *(str+n-1) = s;
        }
    } while (s != ' ');
    str[n]=0;
    puts(str);
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2017, 10:09
Помогаю со студенческими работами здесь

Вывод строки посимвольно
Вывести посимвольно строку используя циклы. (exe)

Вывод строки посимвольно
Ребят вот такое дело: string s=&quot;привет&quot;; и как мне сделать что бы каждый шаг цикла подставлялось по...

считывание информации с клавиатуры и вывод ее на экран
Помогите с задачей ввести с клавиатуры массив из n-байт. Подсчитать количество элементов меньших...

Считывание файла посимвольно
Помогите модифицировать код... .model tiny .code org 100h ;начало Begin: mov ax,3D00h mov...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru