帮我纠正这个问题。我希望答案仅为123,但它显示了一些疯狂的输出。
#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
char a[] = "123 234 435 - ";
int i = 0;
int b[100];
int j = 0;
while (a[i] != ' ')
{
b[j] = a[i] - '0';
j++;
i++;
// cout<<b[j]<<endl;
}
for (int k = 0; k<j; k++)
{
cout << b[j];
}
}
答案 0 :(得分:1)
以下评论的注释
// initialization of b[0] is required
while (a[i] != ' ')
{
b[j] = a[i] - '0'; // what about higher digits? a 10*b[i] is missing
j++; // why? b[0] is not over yet
i++;
// cout<<b[j]<<endl;
}
答案 1 :(得分:1)
疯狂输出?
你在做:
b[j] = a[i] - '0'
a[i]
为i = 0
时{p> 1
所以1
的ascii(49) - 0
的ascii(48)= 1
所以ascii对应的字符进入b[j]
(类似于其他i和j值)因此你得到一些令人困惑的字符而不是123,对于123你只需要放b[j] = a[i]
。
另请注意,在打印循环中,您应该cout << b[k]
。