实际工程中常用的一对函数:
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)