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

Как проверить массив из char на пустоту? - C++

Восстановить пароль Регистрация
 
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
21.04.2014, 17:31     Как проверить массив из char на пустоту? #1
после чсла выводит буквы М, в том месте где пустые значения, как сделать чтобы они не выводились? number[i] != '\0' - не помогает, NULL тоже
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
char number[100];
 
    cin>>number;
 
    for (int i = 0; i < 100; i++)
    {
       if(number[i] != '3' && number[i] != '6' && number[i] != '\0') {
           cout<<number[i];
       }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
21.04.2014, 17:45     Как проверить массив из char на пустоту? #2
Цитата Сообщение от mh-coder Посмотреть сообщение
number[i] != '\0' - не помогает
конечно, там же мусор, а не нули - сделай так: char number[100] = {0};
IrineK
Заблокирован
21.04.2014, 17:45     Как проверить массив из char на пустоту? #3
Почему переменной присваивается произвольное значение("мусор")?
pav1uxa
1709 / 1549 / 599
Регистрация: 23.01.2014
Сообщений: 5,596
Завершенные тесты: 1
21.04.2014, 18:34     Как проверить массив из char на пустоту? #4
Цитата Сообщение от mh-coder Посмотреть сообщение
после чсла выводит буквы М, в том месте где пустые значения, как сделать чтобы они не выводились? number[i] != '\0' - не помогает, NULL тоже
Потому что наша строка заканчивается символом '\0', но это не значит что после него отсутствуют ячейки памяти. Просто после того как наткнулись на этот символ, нужно прекращать вывод. Например вот так:
C++
1
2
3
4
5
6
7
8
9
    char number[100];
    cin>>number;
    for (int i = 0; i < 100; i++)
    {
        if(number[i] == '\0')
            break;
        if(number[i] != '3' && number[i] != '6')
            cout<<number[i];
    }
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.04.2014, 19:40     Как проверить массив из char на пустоту? #5
Для прохода по си-строке лучше использовать указатель на символ:
C++
1
2
3
4
5
    for (char* p = number; *p; ++p)
    {
        if(*p != '3' && *p != '6')
            cout<<*p;
    }
Yandex
Объявления
21.04.2014, 19:40     Как проверить массив из char на пустоту?
Ответ Создать тему
Опции темы

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