最近偶然使用write函数时,想要将字符串、整型数等类型写入文件,多次写入的话看着太乱,就想着写个字符串数组,一次都写进去,这时问题来了,该怎么将整型数转为字符串?
一番查找,有所收获,故而记录以下,方便日后使用。
使用函数sprintf
int sprintf( char *str,const char * format,.........);
关于这个函数sprintf()会根据参数format字符串来转换并格式化数据,然后将结果复制到参数str所指的字符串数组,直到出现字符串结束(’\0’)为止。关于参数format字符串的格式请参考printf()。
直接上示例看一下是怎么用的:
// 获取系统时间
char ch[10];
time_t times;
time(×);
struct tm *tim = localtime(×);
// 将时间转为字符串
sprintf(ch, "%d:%d:%d", tim->tm_hour, tim->tm_min, tim->tm_sec);
获取的时间结构体tim里面的参数都是整型的,想要转为“16:25:32”的格式字符串,只需将存放结果的数组放到参数1,参数二是你要以什么格式放到数组,参数三是格式对应的整型数。
注意:参数二格式那里是参数三的格式
既然写到sprintf函数,此时就要提一下sscanf函数了,他的作用与sprintf函数相反,即sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。
int sscanf (const char *str,const char * format,........);
以下是他的使用情况:
//结构体----用于线程传参
struct FILE_TIME info;
// 将主函数传过来的时间参数转化一下
sscanf(argv[1], "%d:%d:%d", &info.hour, &info.min, &info.sec);
将外界传参argv[]的字符串以 “%d:%d:%d“ 的格式输入到三个参数中
注意:这里的格式是参数三的格式