【发布时间】:2019-12-21 18:09:16
【问题描述】:
我正在为一个函数而苦苦挣扎。 目标是检查用户输入(已清理)并采取相应措施。
函数如下所示:
bool checkMove(board *Minesweeper,char *input){
char *tmp;
switch(input[0]){
case '?':
if(isalpha(input[1])){
input[1]=toupper(input[1]);
long eval = strtol(input, &tmp, 10);
if(tmp==input){
printf("something went wrong :(\n");
}
printf("Number: %ld\n",eval);
if (eval>Minesweeper->height) {
printf("Out of Bounds!\n");
} else {
printf("Valid move\n");
}
// other stuff
输出:
Your Move: ?A21
something went wrong :(
Number: 0
Valid move
我正在传递输入值,因此它不是本地函数。相同的代码(strtol)在不同的上下文中工作得很好。 我不认为这是局部变量的问题。
【问题讨论】:
-
代码似乎正确;您在哪里寻找问题?
-
“Your Move:”后面打印的是
input的值吗? -
您好,我想将输入中的数字转换为 int。所以我可以稍后使用它们(条件检查等)例如查看 if 语句,我将 eval(转换结果)与游戏板的高度进行比较。但是如果我不能转换字符串中的数字,我不能与他们合作。
-
input+2与&input[2]含义完全相同。 -
@U.Windl “代码似乎正确”——不,真的,它没有。