下面这个程序是在指定的文件中产生指定数量的随机数, 这个小例子主要展示下面两个知识点:
一是, 在C语言如何产生伪随机数。 二是, 如何对文件进行操作。
#include
#include
#include
#include
#define SIZE 256
/*
function : generate rand number according the n
input : n is the number of rand
: fp is the file saved rand
output : void
*/
void genrandnum(int n, FILE *fp)
{
int i,j;
//int buf[SIZE];//define 1k buffer
int len = n/SIZE;
//memset(buf, 0, sizeof(buf));
//set random seed
time_t tim;
srand(time(&tim) & 0xffff);
//process the case rounded SIZE part
for(i=0; i < len; ++i)
{
for(j=0; j < SIZE; ++j)
{
fprintf(fp, "%d ", rand());
}
//output to file
fputc('\n', fp);
}
//process the case that the n less than SIZE part
for(i=0; i < (n%SIZE); ++i)
{
fprintf(fp, "%d ", rand());
}
//output to file
fputc('\n', fp);
}//genrandnum
/*
function : convert the stirng to integer
input : converted string
output : flag used of identify result of excuting
: num saved value
*/
/*int s2i(int *n, const char *s)
{
int tmp = 0;
int i;
if(NULL == s)
return -1;
i = *s;
while(i != 0)
{
if(isdigit(*s))
{
tmp *= 10;
tmp += *s -
'0';
}
else
{
return -1;
}
//next char
--s;
i = *s;
printf("\n\t\t %d \n", i);
}
//assign n
*n = tmp;
}*/
/*
function : printf helop infomation
input : void
output : void
*/
void help_info(void)
{
printf("\n format : command file num \n");
printf("example :\n\t genrandnum my.txt 1024\n");
printf(" args : ");
printf("\n\t file : to save rand number \n");
printf("\n\t num : the number of generate rand\n");
}
int main(int argc, char *argv[])
{
FILE *fp; //the file of saved rand
int num; //the number of generating rand
//process the args
if(3 != argc)
{
help_info();
return 1;
}
num = atoi(argv[2]);
//open file saved rand number
fp = fopen(argv[1], "w");
if(NULL == fp)
{
fprintf(stderr, "%s is : %s", argv[1], strerror(errno));
return 1;
}
printf("\n\t\t %d \n", num);
genrandnum(num, fp);
//colse file handle
fclose(fp);
return 0;
}
阅读(636) | 评论(0) | 转发(0) |