运行以下代码时出错

时间:2013-12-02 07:25:15

标签: c arrays

我写了一个代码,但我不知道为什么它不起作用并打印“beterek”。 它也不会通过我的while循环而不会调用我的凸轮功能... 请帮忙... 以下代码是我的代码的一部分:

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);
        }
        }

1 个答案:

答案 0 :(得分: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

请确保检查输入的数字是否为有效的二进制数字!