sscanf\sprintf\fread\fwrite

来源:互联网 发布:淘宝助手ipad版 编辑:程序博客网 时间:2024/05/21 21:55

1.sscanf的用法

    定义函数int sscanf (const   char *str,  const  char  *  format.........);

     其函数表示会将参数str的字符串根据参数format字符串来转换并格式化数据。转换后的结果相应存在对应的参数中。

其应用如下:

(1)取指定长度的字符串,例:取长度为3字节的字符串。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[512] = { 0 };
sscanf("123456", "%4s", str);
printf("%s", str);
getchar();
system("pause");
return 0;
}

输出的结果为“123”

(2)取到指定字符为止的字符串。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>


int main()
{
char str[512] = { 0 };
sscanf("123456abc deef", "%[^ ]", str);      //取到指定的空格终止
printf("%s", str);

getchar();
system("pause");
return 0;
}

(3).取到指定字符集为止的字符串。例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>


int main()
{

char str[512] = { 0 };
sscanf("123456abcdeef", "%[1-9]", str);       //取到仅包含1-9的字符串终止
printf("%s", str);
getchar();
system("pause");
return 0;
}

2.sprintf的用法

sprintf是个变参函数,定义为 int sprintf (char   *buffer,  const   char  *format,  .......);

 除了前两个参数类型固定外,后面可以连接任意多个参数,而最主要的就是显示在第二个参数上,即格式化字符串上。

(1)sprintf代替itoa

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>


int main()
{
char s[10] = { 0 };
sprintf(s, "%d", 123);      //把整数123打印成一个字符串保存在s中
printf("%s", s);
getchar();
system("pause");

return 0;
}

(2)指定宽度,不足的左边补空格

int main()
{
char s[10] = { 0 };
sprintf(s, "%5d%5d", 123,456);         //输出     123     456
printf("%s", s);
getchar();
system("pause");
return 0;
}

(3)也可以左对齐

int main()
{
char s[10] = { 0 };
sprintf(s, "%-5d%5d", 123,456);       //输出123     456
printf("%s", s);

getchar();
system("pause");
return 0;
}

简单来看,sscanf和sprintf都是对其输入或输出的数据进行格式化,来实现指定格式的输入或输出。

3.fread的研究

定义    int   fread (void  *buffer ,int  size,  int  count  , FILE  *fp);

  从FP指向文件的当前位置开始,一次读入size个字节,重复count,并将读入的数据存放到从buffer开始的内存中,buffer是存放读入数据的其实地址(即存放处)

4.fwrite

从buffer开始,一次输出size 个字节,重复count 次,并将输出的数据存放在fp所指向的文件中。buff是要在输出数据在内存的起始地址(即从何处开始输出),一般用于二进制文件的处理。