2017-01-20 11 views
-3

У меня есть c-программа, которая принимает строковые вводы. Я хочу проверить, являются ли эти входы двоичными значениями, как это сделать?C string программирование двоичный

Например, если пользователь вводит «1001», как я могу я могу проверить, если его двоичный или не пытаться не использовать указатели Пожалуйста, сделайте это в с, а также не использовать математическую библиотеку

@ MyWork до сих пор я преобразовал строку в целое число и использовать функцию atoi Здесь функция Я проверяю целое с

@ Программа Re-объяснил Я использую функцию Scanf взять в два входа и I хранить их как строку. Пользователь должен ввести два двоичных числа. Затем я хочу проверить и убедиться, что каждый из этих чисел двоичный. Ниже приведены некоторые примеры

INput: 101001 100101 
Both Stored As String. 
Output:function checks and see thats they are both binary 

    That is a correct way I want it to run. Here is another example 
    Input:1001hshds101 100101 
    Both stored as String 
    Output: Checks both strings and knows that the first string is wrong 







//SOme of my work (ignore this for the most part) 
int binCheck(long long int input){ 
     int dv; 
     while(input! = 0){ 
     dv = input%10; 
     if(dv>1){ 
      return 0; 
      } 
     input = input/10; 
    } 
    return 1; 
    } 
+4

этот звук нравится еще одна домашняя работа. что ты уже испробовал? покажите нам какой-то код, и мы поможем –

+0

@SeekAddo просто добавил код. – donaldTheProgrammer

+0

Я полагаю, что определение «двоичный» здесь представляет собой число, десятичное представление которого содержит только 0 и 1, исправьте меня, если я ошибаюсь. Функция 'binCheck' кажется мне верной. Итак, где же проблема? –

ответ

1

Не используйте atoi(). Просто зациклируйте каждый символ строки и убедитесь, что каждый символ является либо «0», либо «1». Пример ниже.

#include <stdio.h> 
#include <string.h> 

int isBinary(char *value); 


int isBinary(char *value) 
{ 
    int i; 
    int bIsBinary = 0; 
    int len; 

    bIsBinary = 1; 

    len = strlen(value); 
    for(i = 0; i != len; i++) 
    { 
     if (value[i] != '0' && value[i] != '1') 
     { 
      bIsBinary = 0; 
      break; 
     } 
    } 
    return(bIsBinary); 
} 


int main (void) 
{ 
    char *value = "101a001"; 
    int isBin; 

    isBin = isBinary(value); 
    printf("[%s] is Binary::%s\n", value, (isBin) ? "true":"false"); 

    return(0); 
} 
+0

Не могли бы вы просто получить длину один раз? т. е. поместите 'int len ​​= strlen (value);' выше цикл, затем 'for (i = 0; i ryyker

+0

@ryyker Да, это разумная вещь. – Chimera

+0

Можете ли вы сделать это как функцию, отличную от основной? – donaldTheProgrammer