Не проходит проверку на ввод с клавиатуры строго определенных символов
Я написал программку, переводящую цифры из двоичной системы в десятичную. Двоичное число она получает в виде аргумента командной строки. На этапе проверки правельности ввода я столкнулся с проблемой.
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;
}