2013-12-02 2 views
-8

Я написал код, но не знаю, почему он не работает и печатает "beterek". также он не проходит через мое время цикл и не вызывает мой кулачок FUNC ... пожалуйста, помогите ... следующего кодом является частью моего кода:Ошибка при запуске кода

int main() 
     { 
     int a[100], b[100], diff=0, m=0, n=0, temp[100], s=0,z,max=0; 
     printf("Enter binary number 1: "); 
     scanf("%d", &a[100]); 
     printf("Enter binary number 2: "); 
     scanf("%d", &b[100]); 
     while(a!='\0') 
       m++; 
     while(b!='\0') 
       n++; 
     if(m>n) 
     { 
       printf("beterek"); 
       max = m; 
       diff = m - n; 
       for(s=0; s<=diff; s++) 
         temp[s] = 0; 

       for(z=s; z<=n; z++) 
         temp[s] = b[s]; 
     cal(a,temp); 
     } 
     else 
     { 
     printf("beterek"); 
       max = n; 
       diff = n - m; 
       for(s=0; s<=diff; s++) 
         temp[s] = 0; 

       for(z=s; z<=m; z++) 
         temp[s] = a[s]; 
     cal(b, temp); 
     } 
     } 
+4

Что вы думаете 'while (a! = '\ 0') m ++;' будет делать? – devnull

+0

Итак ... Вы думаете, что размерof сделал бы мой друг кода? – MLSC

+0

a и b - целые массивы. Зачем проверять '\ 0'? '\ 0' завершает строки aka char массивы, а не массивы int! –

ответ

1

Используйте fgets для чтения строка ввода до тех пор, пока вы не достигнете символа новой строки (это означает, что до входа пользователя в игру). Затем преобразуйте каждый символ в int.

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

    int main() 
      { 
      int a[100], b[100], diff=0, m=0, n=0, temp[100], s=0,z,max=0; 
      int iIndex=0; 
      char cString[100]; 
      int i=0; 
      char* cpString=NULL; 
      memset(&cString,0,100); 
      printf("Enter binary number 1: "); 
      //scanf("%s",cString); 
      fgets(cString,sizeof(cString),stdin); 
      cpString=cString; 
      while(*cpString!='\n'){ 
       a[iIndex]=*cpString-'0'; // this converts char to int 
       cpString++; 
       iIndex++; 
      } 
      printf("Count of elements in a : %d\n", iIndex); 
      for (i=0;i<iIndex;i++){ 
       printf("%d\n",a[i]); 
      } 
      return 0; 
      } 

Выход:

Enter binary number 1: 1101010 
Count of elements in a : 7 
1 
1 
0 
1 
0 
1 
0 

Просто убедитесь, что вы проверить погоду входного числа является действительным двоичным числом!

+0

спасибо ... очень хорошо – MLSC

+0

сейчас !!! Если я попытаюсь добавить два двоичных файла, как это, возможно ли это? У меня есть двоичный 1 и двоичный 2 сейчас .. Я пытаюсь сделать: bin1 + bin2 ... Возможно ли это? – MLSC

+0

хорошо. Все возможно. Buf, если вы хотите добавить их вместе, то почему вы хотите сохранить каждый бит отдельно? В любом случае, вы могли бы сделать: 'int number = 0; int temp = 0; для (i = 0; i

Смежные вопросы