[语法]标准C函数- stdio.h和stdlib.h

实际工程中常用的一对函数:

sprintf – 格式化字符串, 首字母s表示string
sscanf – 解析字符串

例:
char buf[128];
sprintf(buf, “Name:%s , Age:%d”, “shaofa”, 33);


char* buf = (char*)malloc(128); // 参考12章malloc用法
sprintf(buf, “Name:%s , Age:%d”, “shaofa”, 33);

sscanf用于提取字符串的字段
const char* text = “2015-12-13”;
int year,month,day;
int n = sscanf(text, “%d-%d-%d”,
&year, &month, &day);
if( n != 3)
{
printf(“bad format!\n”);
}
sscanf的返回值表示实际解析出的字段的个数

 

 

rand与srand : 随机数的生成

要确保每次程序启动时,传入不同的seed。通常是传入当前的时间。
注: time函数返回一个整数
srand(time(NULL));
for(int i=0; i<10; i++)
{
printf(“%d \n”, rand());
}
srand: 只需要main()启动时运行一次就够了。不需要每次rand()之前都调用srand。

对rand()结果取模

通常地,要对rand()返回的结果取模,使其坐落在一个区间内。
比如,要在100和160之间随机取一个数。
int r = rand() % 60 + 100;
其中,60是区间长度

对rand()结果取模

比如,要在0.00和1.00之间取一个小数
int r = rand() % 100;
double rp = r / 100.0; // 转成小数

或者,使用 RAND_MAX
double rp = (double)rand()/ RAND_MAX ;
RAND_MAX是一个整型数字,表示rand()函数产生的随机数的区间上限。(下限是0)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注