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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
#1

Вывод строки - C++

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

Всем привет!

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

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;
}
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 12:04     Вывод строки
Посмотрите здесь:

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

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

Некорректный вывод строки - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; #include &lt;limits&gt; using namespace std; ...

Ввод/вывод строки - C++
#include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; #include &lt;string&gt; using std::strlen; using...

Вывод части строки - C++
c++ Есть ли простая команда для вывода части строки(ну или n первых символов)? Может я перегрелся или еще что, но сколько не искал не...

Вывод строки на экран - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string s; cout &lt;&lt; &quot;enter string &quot; &lt;&lt; endl; cin...

Вывод числа из строки - C++
Нужен вывод заданного символа в строкаx ( индекс вводится с клавиатуры)

Вывод слов из строки - C++
Суть задачи: Дан текст, состоящий из N (2&lt;=N&lt;=10) строк с максимальной длиной 80 символов. Необходимо вывести в обратном алфавитном...

Вывод строки в визуалке - C++
Такой вопрос, есть задача &quot;Дана квадратная матрица. Подсчитать кол-во отрицательных элементов, меньших минимального элемента на главной...

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

Строки. вывод не получается - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; using...

Вывод строки в консоль - C++
И так, вот код: #include &lt;iostream&gt; using namespace std; int main() { cout «&quot;У каждой эпохи свой язык\ n&quot;; return 0; } Вот...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 12:20     Вывод строки #2
C
1
str[i]='\0';
добвате

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

Спасибо.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
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);
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
04.12.2011, 12:35  [ТС]     Вывод строки #5
Спасибо.

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

Сделал так:
C++
1
while ((ch = _getch()) != 13 && i<N-1)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 12:40     Вывод строки #6
amfisat, тогда используйте динамическое выделение памяти, на каждом шаге увеличивая на 1 элемент, с помощью realloc
Yandex
Объявления
04.12.2011, 12:40     Вывод строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru