sprintf
函数原型:
int sprintf( char *buffer, const char *format [, argument] ... );
char *buffer
这是指向一个字符数组的指针,用来存放字符串。const char *format [, argument] ...
格式化数据和printf
用法类似int sprintf
如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的\0
字符。如果失败,则返回一个负数。
函数功能:把格式化的数据写入某个字符串中,会追加 ‘\0’ 字符。
例1:
#include <stdio.h>
typedef struct Data {
char name[20];
int age;
double score;
}Data;
int main() {
Data data1 = { "孙悟空" , 18 , 20.6 };
Data data2 = { "猪八戒" , 28 , 30.6 };
char buffer[256] = "#############################################################################";
// 返回写入字符个数
int next_index = sprintf(buffer, "%s %d %lf\n", data1.name, data1.age, data1.score);
// 数组在上一次写入的后面追加
sprintf(buffer + next_index , "%s %d %lf", data2.name, data2.age, data2.score);
printf("字符串数据:\n%s\n", buffer);
return 0;
}
例2:
#include <stdio.h>
typedef struct Data {
char name[20];
int age;
double score;
}Data;
int main() {
Data data1 = { "孙悟空" , 18 , 20.6 };
Data data2 = { "猪八戒" , 28 , 30.6 };
char buffer[256] = { 0 };
sprintf(buffer, "%s %d %lf\n", data1.name, data1.age, data1.score);
sprintf(buffer , "%s%s %d %lf" , buffer , data2.name , data2.age , data2.score);
printf("字符串数据:\n%s\n", buffer);
return 0;
}
sscanf
函数原型:
int sscanf( const char *buffer, const char *format [, argument ] ... );
char *buffer
存储格式化数据的字符数组首地址const char *format [, argument] ...
格式化数据和scanf
用法类似
函数功能:读取字符串中格式化的数据。
例1:
#include <stdio.h>
typedef struct Data {
char name[20];
int age;
double score;
}Data;
int main() {
char buffer[256] = "孙悟空 18 100.00";
Data temp = { 0 };
sscanf(buffer , "%s %d %lf" , temp.name , &temp.age , &temp.score);
printf("读取到的数据:%s %d %lf" , temp.name , temp.age , temp.score);
return 0;
}