sprintf函数
先来看一下msdn中对这个函数的定义;
Write formatted data to a string.(写格式化数据到一个字符串)
int sprintf( char *buffer, const char *format [, argument] … )
它的参数有一个字符串和可变参数
代码演示如下
#include<stdio.h>
struct S
{
char name[20];
int age;
char sex[5];
};
int main()
{
char buf[100] = {0};
struct S s = {"zhangsan", 20, "男"};
sprintf(buf,"%s %d %s",s.name, s.age, s.sex);
printf("%s",buf);
system("pause");
return 0;
}
执行上的代码,屏幕上会输出zhangsan 20 男
sscanf
Read formatted data from a string.(从一个字符串中读取格式化数据)
int sscanf( const char *buffer, const char *format [, argument ] … );
参是与sprintf相同
代码演示
#include<stdio.h>
struct S
{
char name[20];
int age;
char sex[5];
};
int main()
{
struct S tmp = {0};
char buf[100] = {0};
struct S s = {"zhangsan", 20, "男"};
sprintf(buf,"%s %d %s",s.name, s.age, s.sex);
printf("%s\n",buf);
sscanf(buf,"%s %d %s", tmp.name, &(tmp.age), tmp.sex);
printf("%s %d %s\m", tmp.name, tmp.age, tmp.sex);
system("pause");
return 0;
}
fread和fwrite
这两个函数是以二进制的形式从流中读取和写入数据。
fwrite的参数
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
它的参数是要写的源数据,源数据的大小,每次要写入的个数,要写入的目标。
#include<stdio.h>
struct S
{
char name[20];
int age;
char sex[5];
};
int main()
{
struct S s = {"wangwu", 20, "女"};
FILE* pf = fopen("test.q", "wb");
fwrite(&s, sizeof(s), 1, pf);
fclose(pf);
pf = NULL;
return 0;
}
fread和fwrite相反,是从流中以二进制的形式读取数据
参数
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
#include<stdio.h>
struct S
{
char name[20];
int age;
char sex[5];
};
int main()
{
struct S s = {0};
FILE* pf = fopen("test.q", "bb");
fread(&s, sizeof(s), 1, pf);
printf("%s %d %s\n",s.name, s.age, s.sex);
fclose(pf);
pf = NULL;
return 0;
}