如何让一个函数通过命令行打印出一定数量的随机数? C

How do I make a function print out a certain amount of Random numbers through the command line? C

我如何通过一个论点并在我的程序中打印那么多数字?到目前为止,我发现如果我将 count 更改为比 argc 更低的数字,数字的数量就会增加。但是,我希望它在我在命令行中键入的任何内容上打印 x 个数字,例如 10。 谢谢

int random( int limi, int lims);

int main (int argc, char *argv[])
{
 int count;
srand(time(NULL));
int p;
int input;
int i = 0;


if (argc > 1)
{
  for ( count = 1; count < argc; count++)
{

 p = random(-10000,10000);

  printf(" %d\n",p );


}
}
else
  {
    printf("The command had no other arguments.\n");
  }

return 0;
}

int random( int limi, int lims )
{
          return ( rand() % (lims - limi) - lims);
 }

应用程序的参数作为字符串数组传入 argv[]。要将第一个参数转换为整数,请使用 atoi()、strtol() 或 sscanf():

对其进行解析
if (argc > 1)
{
    int amount = atoi(argv[1]);
    for ( count = 1; count < amount; count++)
    {
         p = random(-10000,10000);

         printf(" %d\n",p );

    }
}

参数从argv[1]开始。 argv[0] 将是您的程序的名称。

random()函数中有两个错误

return ( rand() % (lims - limi) - lims);

首先% (lims - limi)会产生一个范围太短1。而且模运算后,你应该加上下限,而不是减去上限。在你的问题中,限制是 -10000 和 10000 所以它没有区别,但是如果你将它称为 random(10,20) 你会看到错误。

main()函数中,argc给出参数个数。第一个 (argv[0]) 通常是可执行文件的名称,因此您需要检查是否有多个参数,然后将字符串转换为数字。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int random( int limi, int lims )
{
    return ( rand() % (lims - limi + 1) + limi);
    //return ( rand() % (lims - limi) - lims);
}

int main( int argc, char *argv[] )
{
    int count, p, input;
    srand((unsigned)time(NULL));
    if (argc > 1)                                   // if argument supplied
    {
        if (sscanf(argv[1], "%d", &input) == 1)     // check valid input
        {
            for (count=0; count<input; count++)
            {
                p = random (-10000, 10000);
                printf("%d\n", p);
            }
        }
    }
    return 0;
}