Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
1

Вывод строки

04.12.2011, 12:04. Показов 740. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Такой вот вопрос: почему при выводе строки в конце печатаются какие-то непонятные знаки? И как это убрать?

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
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
 
int main()
{
    int i = 0;
    const int N = 10;
    char ch, str[N];
 
    printf("Enter string:\n");
    while ((ch = _getch()) != 13 && i<N)
    {
        if (isalnum(ch) || ispunct(ch)) 
        {
            _putch(ch);
            str[i++] = ch;
        }
    }
        
    printf("\n%s\n", str);
        
 
    return 0;
}
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2011, 12:04
Ответы с готовыми решениями:

Вывод строки на экран после ввода 1 слово это строки
Стоит задача вывести целую строку из файла введя в диалоговое окно 1 слово из этой строчки. Из...

Вывод на экран чётных слов строки исправить на вывод нечётных слов
#include&lt;conio.h&gt; #include&lt;iostream.h&gt; #include&lt;string.h&gt; #include&lt;stdio.h&gt; int i,l,j,k,p,n;...

Вывод строки
Как сделать вывод строки &quot;Привет&quot; таким образом: П По При Прив Приве Привет

Строки(вывод)
такая проблема... дана задача Вывести на экран последние 5 символов заданной строки. Длина строки...

5
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
04.12.2011, 12:20 2
C
1
str[i]='\0';
добвате

Добавлено через 44 секунды
или при объявлении обнулите строку,
или вводите с помощью fgets
1
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
04.12.2011, 12:22  [ТС] 3
Цитата Сообщение от go Посмотреть сообщение
1
str[i]='\0';
добвате
Да, непонятные символы не печатаются, но теперь при вводе 11-го символа (длина строки=10) одновременно с печатью строки появляется окошко с ошибкой: Стек 'str' переполнен.
Можно как-то от него избавиться?

Спасибо.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
04.12.2011, 12:33 4
amfisat, ну вводить надо 9 символ (и длина строки 9 символ должна быть)
если объявили
C
1
char s[10];
ведь десятый символ
C
1
s[9]='\0';//считаем от нуля
Естественно у Вас будет ошибка, выход за пределы

Добавлено через 3 минуты
Вообще попробуйте вот такой ввод
C
1
2
3
4
5
6
7
#include <stdio.h>
 
...
 
char s[10];
 
fgets (s,10,stdin);
0
70 / 70 / 36
Регистрация: 16.06.2009
Сообщений: 240
04.12.2011, 12:35  [ТС] 5
Спасибо.

Вообще попробуйте вот такой ввод
Мне надо именно посимвольный ввод.

Сделал так:
C++
1
while ((ch = _getch()) != 13 && i<N-1)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
04.12.2011, 12:40 6
amfisat, тогда используйте динамическое выделение памяти, на каждом шаге увеличивая на 1 элемент, с помощью realloc
0
04.12.2011, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2011, 12:40
Помогаю со студенческими работами здесь

Неправильный вывод строки, C++
Напишите часть кода которая исправит вывод чтобы сообщение выводилось один раз, а не столько,...

Вывод строки из вектора
Как вывести на экран строку, которая находится в векторе? #include &lt;cmath&gt; #include &lt;iostream&gt;...

Вывод командной строки
Как вывести на экран копию командной строки! Надо это как-то сделпть с аргументами функции main

Вывод слов из строки
Нужно вывести предпоследнее слово строки, если оно состоит из трех символов, иначе вывести второе...


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

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