基本上,我正在尝试使用C的基本知识来创建d&d骰子滚子。在for
循环中,该循环应该循环输入并返回骰子中的边数,{ {1}}似乎返回两个单独的值:1.正确的值,2.一个非常大的数字。我不知道为什么它返回第二个数字,这弄乱了strlen()
循环。
我尝试将for
分配给另一个名为length的变量,并在使用strlen()
的函数中调用它。每次我在存在输入strlen()
的函数中打印strlen()
时,它都会打印正确的值,但是一旦将其传递给dice_inp
,它就会返回非常大的数字。
sides()
答案 0 :(得分:1)
您的代码中有很多问题。 首先,通过以下方式定义函数“ sides”:
int sides(int length, char dice_inp[], int keynum);
但是您不带参数调用它
num_sides = sides();
当您获得无效的输入时,在函数“ num”中,您将再次递归调用它,这会浪费堆栈。最好使用循环。在同一函数中,当递归调用时,您将丢失返回值。这意味着最后您得到错误的值。该功能中的“睡眠”功能对我来说毫无意义。
我猜测strlen的问题与输入字符串不包含终止符的事实有关。尝试使用printf在strlen之前跟踪输入。
我在这里描述的问题并不是唯一的问题。