【发布时间】:2013-07-14 17:08:38
【问题描述】:
我一直在尝试用 C++ 创建一个程序来尝试完成这个伪代码:
get argv[1] into int
get int’s digits into array[int length]
for int i = array length; i >= 0;
gen random number into check
if check == array[i]
i
say Number i was check
end if
我认为我真正苦苦挣扎的部分是
get argv[1] into int
get int’s digits into array[int length]
部分。在我的完整代码中,甚至没有尝试,因为我尝试过的任何东西都不起作用。我得到最多的错误是代码编译,但每次它尝试cout << "Number 1:" << number 我只是得到Number 1: 0 无论我输入的实际数字。当0 == 0 代码甚至没有注意到时。
我破坏的可能违反约定的代码如下:
#include <iostream>
#include <string>
int main (int argc, char **argv) {
if (argc == 1 || argc == 3) {
std::cout << "Argument count does not match (one argument expected)\n";
return(-1);
}
std::cout << "Input: " << argv[1] << "\n";
const char* text = argv[1];
int number = atoi(text);
int check = rand() % 10;
std::cout << "Check 1: " << check << "\nNumber 1: " << number << "\n";
if (check == array[i]) {
i++;
std::cout << "Success! Number " << i << " was " << check << ".\n";
}
}
}
TL;DR:我的“某种”数字破解者不想将 argv1 放入 int 中,然后将 int 的数字放入数组中。
随意让我感到愚蠢。希望问题不要太具体。我会按要求详细说明。
编辑:这是早期的转换尝试:
int array[];
for (int i = strlen(text); i >= 0; i--) {
array[i] = number % 10;
number /= 10;
}
EDIT2:这么多回复,没有解决方案。谢谢你试图一次解释这个新手这么多事情。顺便说一句:Git
【问题讨论】:
-
text中的每个字符都是数字的 ASCII 表示,对吧?您可以利用这一点将每个数字放入您的 int 数组中,而不是先使用atoi。 -
@crush 除了我对 c++ 几乎一无所知,也不知道如何去做你所暗示的事情。虽然我有点明白你在说什么。
-
第一件事是停止将
char视为alphatbetic character。它实际上只是一个 8 位字节。您的输入来自控制台,除非您使用一些经过修改的使用 unicode 的特殊控制台,否则它将始终是 ASCII。如果您不熟悉 ASCII,请查看以下 ASCII 表:asciitable.com。注意每个character都有一个对应的数值。例如,数字0实际上是数字48。此外,C++中的字符串通常以NUL字节结束,其值为0。 -
假设您的用户输入了数字“576”。这是一个
char的数组,它是一个 4 个字节的数组:char arr[4] = {53, 55, 54, 0};最后一个字节是字符串终止符,是检查字符串结尾的内容。 -
@crush 耶,我学到了新东西!