繁体   English   中英

在char数组中输入数字

[英]Inputting numbers in char array

关于此问题,我需要在程序中输入100位数字并对其执行操作。 我想我会用一个char数组来做到这一点。

我尝试了一段时间后写了这段代码。

 int main()
 {
 //int cases=10;

//while(cases--)
//{
    int i;
    char totalapples[102];
    //char klaudia_apples[200] , natalia_apples[200];

    for(i=0;totalapples[i]!='\0';i++)
    {
            cin>>totalapples[i];
    }

    //cin>>moreapples[200];
    //cout<<moreapples[200];

    while(i--)
    {
      cout<<totalapples[i];
    }
//}

    return 0;
  }

运行此命令时,将得到以下结果:

Input : 1234657891234567981345698
Output : 987564321

任何人都可以告诉发生了什么事吗?

您的程序调用未定义的行为。 尽管char数组包含未定义的值,您仍然尝试使用

totalapples[i]!='\0'

在您的for循环中。 相反,将整个字符串读入std::string

string totalApplesStr;
cin >> totalApplesStr;

现在您可以遍历totalApplesStr

for (char c : totalApplesStr) {
     /* Do whatever you need to */
}

或者,如果这不是代码中的逻辑错误,则可以从头到尾进行迭代:

for (auto it = totalApplesStr.rbegin(); it != totalApplesStr.rend(); ++it) {
    /* Do whatever you need to */
}

使用std :: string代替char数组。

然后,您可以使用std :: tranform转换为int向量来进行大数计算。

您尝试从尚未初始化的数组中测试值。

尽管char数组是可用于此目的的不安全的方法,但可以使用初始化程序对其进行修复:

char totalapples[102] = {0};

同样,您的第二个循环将向后打印结果。 尝试递增 i 而不是递减i

您新初始化了计数器/索引。 还有许多其他改进要做,但是您的代码很短

#define ARRAY_SIZE 102

int main {
    char totalapples[ARRAY_SIZE];
    unsigned int i = ARRAY_SIZE;
    i = 0;
    while (i < ARRAY_SIZE)
    {
        cin>>totalapples[i]; // range is 0..101
        i++;
    }    

    i = ARRAY_SIZE;
    while (i > 0)
    {
        cout<<totalapples[i]; // range is 0..101
        i--; 
    }   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM