Не проходит проверку на ввод с клавиатуры строго определенных символов

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

size_t k = 0;
  while(argv[1][k] != '\0')
    {
      char c[] = {argv[1][k], '\0'};
      if (c != "0")
    {
      if (c != "1")
        {
          printf("%c\n", argv[1][k]);
          return 1;
        }
    }
      k++;
    }

В цикле считается общий размер переданного аргумента и заодно проверяется, все ли символы входят в множество {0, 1}. Но, почему-то данное условие не пропускает ничего, ни правильную строку, ни неправильную. Проверять посимвольно я пробовал, тот же результат.


Ответы (1 шт):

Автор решения: tprvx

Вам нужно по-другому организовать свою программу, изучите сначала как правильно передавать и считывать аргументы командной строки, затем пробуйте писать программу по переводу в десятичное из двоичной

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
       if (argc > 1) //если передаем аргументы, то argc будет больше 1
       {
            //в цикле посимвольно проходим по каждому элементу переданной строки

            for(int i = 0; i < strlen(argv[0]); i++)
            {
                 if((argv[0][i] == '1') || (argv[0][i] == '0'))
                 {}
                 else
                 {
                     cout << "Ошибка! Не валидный аргумент!";
                     return -1;
                 }
            }
       }


       // Здесь делаем что захотим с переданным аргументом, он уже проверен

 
       else
       {
            cout << "Not arguments" << endl;
       }
       system("pause");
       return 0;
}
→ Ссылка