如何让一个函数通过命令行打印出一定数量的随机数? 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;
}
我如何通过一个论点并在我的程序中打印那么多数字?到目前为止,我发现如果我将 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;
}