1、fprintf函数
fprintf函数的功能是和printf函数类似,传送格式化输出到一个流中;只不过fprintf函数的读写对象不是 终端 而是 磁盘文件。
函数原型:
fprintf(FILE * stream, const char * format, 输出表列);
int fprintf(FILE *stream, char *format[, argument,...]);
fprintf接受一串参数,用format指定的格式串中包含的格式说明符,分别作用在这些参数上,并将格式化数据输出到一个流上。
注意格式 说明符的格数 必须与 参数的格数 相同。(有多少%,后面就有多少参数)如果调用成功,将返回转换的字节数,失败时返回一个负数;
2、fscanf()函数
函数原型:int fscanf( FILE *stream,const char *format [,argument ]... );
作用:Read formatted data from a stream.(从流中 读取 格式化的数据)
例子:
#pragma warning(disable:4786)
#include "iostream.h"
#include
using namespace std;
#include
int main()
{
FILE *p = NULL;
p = fopen(".//log.txt","a+"); //以a+方式打开一个文件,注意函数fopen的使用;
if (p == NULL)
return FALSE;
char a[6] = "12345";
// int b = fprintf(p,"%s/n",a); //fprintf函数如果调用成功,返回转换的字符数;这里是6,相当于sizeof(a)
char a1[32] = "";
char a2[32] = "";
int m = 2;
std::map ::iterator iter; //注意map声明迭代器的时候 要有iterator
while( m == 2)
{
m = fscanf(p, "%s/t%s/n", a1,a2); //往a1,a2里面拷贝字符串,返回的m是拷贝的个数,返回-1是拷贝失败;/t和/n是拷贝的终止符;
//也就是第一个字符串拷贝的时候以/t结束,第二个以/n结束,分别拷贝到a1 和 a2 中;
if (m == 2)
{
int a22 = atoi(a2); //atoi是把字符串转换成int类型,这里是把a2从字符串转换成int
//printf("%s/n",a1);
iter = g_mapNames.find(a1); //字典的find方法,是查找字典中有没有key,有的话返回智能指针,没有的话指向end();
if(iter != g_mapNames.end())
g_mapNames[a1] += a22;
else
g_mapNames[a1] = a22;
}
}
char mm[128] = "";
while(1)
{
cin>>mm;
iter = g_mapNames.find(mm);
if( iter != g_mapNames.end())
{
printf("%s--%d/n",mm,g_mapNames[mm]);
}
else
printf("Cannot find your need!/n");
}
//printf("%d/n",g_mapNames.size());
fclose(p);
p = NULL;
return 0;
}