Caesar Cypher - 基本加密。
例如,即使第二个命令行(argv [1])等于3,我也会请求你帮助理解变量k为什么会收到负值。
int main (int argc, string argv[])
{
string text;
int k = 0;
do
{
printf("Type in a plain text:\n");
text = GetString();
//k receives wrong value
k = (int) argv[1];
// Sanity check
printf ("argv[1] is %s and k is %d\n", argv[1], k);
}
while (k < 0);
答案 0 :(得分:0)
你不能只是将字符串转换为int。你需要实际解析它。您可以使用atoi
中包含的stdlib.h
功能。你需要提出:
#include <stdlib.h>
位于文件顶部并更改行:
k = (int) argv[1];
为:
k = atoi(argv[1]);
答案 1 :(得分:0)
你需要做的是concat(Observable.never())
而不是conversion
,因此type-cast
的类型转换不会有帮助,你需要转换{{1} {}使用库函数来int
,就像常用的char *
一样,它在头文件int
中定义。别忘了int atoi (const char *str)
它。 !
但是,我建议使用stdlib.h
,因为它具有强大的错误报告功能。它指定溢出时的返回值(如果出现#include
则返回strtol
,出现溢出时返回LONG_MIN
)并允许用户将underflow
设置为在转换期间跟着。