fprintf()和printf()一样工作。printf是打印输出到终端屏幕,fprintf是打印输出到文件。
fprintf()的返回值是输出的字符数,发生错误时返回一个负值.。
fprintf(fp,"arr[%d]=%d\n",i,arr[i]);//将写入的结果打印到指定的文件中进行输出
void fprintf_tset(void)
{
FILE *fp;
fp=fopen("fprintf_tset.txt","w");//打开文件方式为写入
int arr[]={1,2,3,4,5};
for(int i=0;i<5;i++)
{
fprintf(fp,"arr[%d]=%d\n",i,arr[i]);//将写入的结果打印到指定的文件中进行输出
}
fclose(fp);//关闭文件
}
sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
函数功能:把格式化的数据写入某个字符串
函数原型:int sprintf( char *buffer, const char *format [, argument] … );
返回值:字符串长度(strlen)
void sprintf_tset(void)
{
char str[100];
char str01[10]="135245";
sprintf(str,"%s",str01);
printf("%s",str);
}
例如上面的一段代码,在str01的数组中存入一段格式化的字符串,再用sprintf函数去赋值写入str字符串,然后打印即可。
fscanf()函数的头文件是
其功能为根据数据格式(format)从输入流(stream)中写入数据(argument)。
【参数】stream为文件指针,format为格式化字符串,argument 为格式化控制符对应的参数。
从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在agars对应的变量中。
void fscanf_tset(void)
{
FILE *fp;
fp=fopen("fscanf_tset.txt","r");//打开文件方式为读取
int arr[10];//定义一个字符型数组去存
if(NULL==fp)
{
printf("无此文件!");//判断
}
else
{
fscanf(fp,"%d ",&arr[0]);//赋值于字符型数组中的元素值
}
printf("%d",arr[0]);//在终端中打印输出
fclose(fp);//关闭文件
}
sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。
sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。
void sscanf_tset(void)
{
char str[100];
char str01[10]="1352465";
sscanf("12345","%s",str);
sscanf(str01,"%s",str);
printf("%s",str);
}
#include
#include
void fprintf_r(void)
{
FILE *fp01;
char ch01[100];
char arr[100];
fp01 = fopen("fprintf_r_01.txt","r");
if(NULL==fp01)
{
printf("无此文件");
}
else
{
fgets(ch01,40,fp01);
}
printf("fprintf_r_01.txt文件内容为:%s\n",ch01);
FILE *fp02;
char ch02[100];
fp02 = fopen("fprintf_r_02.txt","r");
if(NULL==fp01)
{
printf("无此文件");
}
else
{
fgets(ch02,40,fp02);
}
printf("fprintf_r_01.txt文件内容为:%s\n",ch02);
char str[20];
sprintf(str,"%s%s",ch01,ch02);//核心:直接写入两个字符串 把格式化的数据写入某个字符串中
printf("两个文件合并之后内容为:%s\n",str);
char *p=str;
int i,j;
char temp;
for(i=0;i*(p+j+1))
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
printf("两个文件合并并排序之后内容为:%s",str);
FILE *fp03;
char arr03[100];
fp03 = fopen("fprintf_r_03.txt","w");
fputs(str,fp03);
fclose(fp03);
}
int main()
{
fprintf_r();
return 0;
}
要点分析:
本题的难点在于,在获取到两串字符之后,如何进行合并操作,这时我们巧妙地运用到了sprintf()函数:
核心:直接写入两个字符串 把格式化的数据写入某个字符串中
sprintf(str,"%s%s",ch01,ch02);
剩下的就比较简单了,再用一下写入“w”操作,写到指定的文件中即可。