Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3350873
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2006-04-19 18:17:23

下面这个程序是在指定的文件中产生指定数量的随机数, 这个小例子主要展示下面两个知识点:
一是, 在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;
}


阅读(721) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~