【问题标题】:Getting an error while running following code运行以下代码时出错
【发布时间】:2013-12-02 07:25:15
【问题描述】:

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

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

【问题讨论】:

  • 你觉得while(a!='\0') m++;会怎么做?
  • 那么...你认为 sizeof 会对我的代码朋友有用吗?
  • a 和 b 是整数数组。为什么要检查\0\0 终止字符串,也就是 char 数组而不是 int 数组!
  • @hhachem 我该怎么做?
  • 使用fread 将输入作为字符串获取,然后在循环中使用scanf,直到到达您读取的字符串的末尾。这样你就可以自动计算ab的长度

标签: c arrays


【解决方案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

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

【讨论】:

  • 现在!!!如果我尝试两个像这样添加到二进制文件中,有可能吗?我现在有二进制 1 和二进制 2 ..我正在尝试做:bin1 + bin2 ...有可能吗?
  • 好吧。一切皆有可能。如果你想把它们加在一起,那你为什么要单独存储每一位呢?无论如何你可以这样做:int number=0;int temp=0; for (i=0;i&lt;lengthofa;i++){ temp=a[i]&lt;&lt;(lengthofa-i); number+=temp; } 这会将数组转换为整数
  • 你知道因为进位...当您添加两个二进制文件时,您面对的是进位...每个位都应该加在一起..谢谢..我试试你说的.. :)跨度>
  • a[i]&lt;&lt;(lengthofa-i-1),只要确保你正确计算了lengthofa。在这里查看示例:ideone.com/28vEjo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2019-01-26
  • 2015-12-13
  • 2023-01-05
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多