为什么我的strlen似乎在此for循环中返回两个值?

时间:2019-05-14 04:48:17

标签: c for-loop strlen

基本上,我正在尝试使用C的基本知识来创建d&d骰子滚子。在for循环中,该循环应该循环输入并返回骰子中的边数,{ {1}}似乎返回两个单独的值:1.正确的值,2.一个非常大的数字。我不知道为什么它返回第二个数字,这弄乱了strlen()循环。

我尝试将for分配给另一个名为length的变量,并在使用strlen()的函数中调用它。每次我在存在输入strlen()的函数中打印strlen()时,它都会打印正确的值,但是一旦将其传递给dice_inp,它就会返回非常大的数字。

sides()

1 个答案:

答案 0 :(得分:1)

您的代码中有很多问题。 首先,通过以下方式定义函数“ sides”:

int sides(int length, char dice_inp[], int keynum);

但是您不带参数调用它

num_sides = sides();

当您获得无效的输入时,在函数“ num”中,您将再次递归调用它,这会浪费堆栈。最好使用循环。在同一函数中,当递归调用时,您将丢失返回值。这意味着最后您得到错误的值。该功能中的“睡眠”功能对我来说毫无意义。

我猜测strlen的问题与输入字符串不包含终止符的事实有关。尝试使用printf在strlen之前跟踪输入。

我在这里描述的问题并不是唯一的问题。