fscanf和fprintf的区别,为什么很多库函数名称前有f 如fscanf ,fclose,fprintf, 等等,这是什么意思
fscanf和fprintf的区别,为什么很多库函数名称前有f 如fscanf ,fclose,fprintf, 等等,这是什么意思详细介绍
本文目录一览: fscanf和fprintf
int fscanf(FILE*stream, constchar*format, [argument...]):
FILE *stream:文件指针
char *format:输入格式
[argument...]:附加参数列表
fscanf()的功能是从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。fgets的区别在于,fgets遇到空格不结束。返回值为整形,含义为读入的参数的个数,失败则返回EOF(-1)。
案例代码:
//...#include
int main(void) { FILE *FSPOINTER; char STRBUFF[128]; //... FSPOINTER = fopen("HELLO.TXT", "r"); //打开文件 //... fscanf(FSPOINTER, "%s", STRBUFF); //从文件中读取字符串 //... return 0;};//若HELLO.TXT中的开头字符串为HELLO,则STRBUFF中为HELLO
int fprintf (FILE* stream, const char*format, [argument])
FILE*stream:文件指针
const char* format:输出格式
[argument]:附加参数列表
fprintf()的功能是格式化输出到一个流/文件中函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值。
案例代码:
//...#include
int main(void) { FILE *FSPOINTER; char STRBUFF[16] = "Hello World." //... FSPOINTER = fopen("HELLO.TXT", "w+"); //创建文件 //... fprintf(FSPOINTER, "%s", STRBUFF); //输出字符串至文件 //... return 0;};//输出至文件HELLO.TXT:Hello World
// 从文件句柄fp中获取2个int型数据,分别赋值给a,b
fscanf(fp,"%d%d",&a,&b);
// 将a,b的值写入文件句柄fp所指的文件,"%d %d"是书写格式.
fprintf(fp,"%d %d",x,y);
二者类似于不带前缀f的scanf和printf,只是因为前者是和文件进行交互,而后者是和终端进行交互.
fread和fprintf,fwrite和fscanf的区别是什么?
fread fwrite fprintf fscanf fopen 这些都是带缓存的文件操作函数
fopen 打开文件,返回文件指针 对应的函数是 fclose(); 关闭文件指针
fread 是读取文件内容到数据缓冲区---指针(支持二进制数据) 对应的函数是 fwrite :将数据缓冲区的数据写到文件中去。
fscanf 格式化读文件内容到相应的数据指针中去(只支持文本方式) 对应的是 fprintf :格式化输出数据到文件中去。
C语言中fread,fwrite和fscanf,fprintf的区别,什么是格式化数据
fread:是读取数据
fwrite:是写入数据
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
注意:1 完成次写操(fwrite())作后必须关闭流(fclose());
2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;
3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。
4.fscanf 和 scanf 相似 :当能正常读入数据时, fscanf 返回读入数据的个数,否则返回 EOF 。
为什么很多库函数名称前有f 如fscanf ,fclose,fprintf, 等等,这是什么意思
这一类函数表示是对文件操作的函数,fscanf是从文件写入到自定义缓冲区的函数,fclose是关闭文件,fprintf是从终端写入到文件的函数,可见这些函数都是对文件的操作,f 是英文file的意思。
表示这些函数都是用于对文件进行操作的函数。
f表示的是操作文件。file的意思。就是向文件中读取(fscanf),向文件中写入fsprintf,还有就是关闭文件(fclose),还有fopen(以某种形式打开文件),fread,fwrite。。。等等都是在操作文件的。
fprintf(fp,%s %s %d %20s 这句指什么意思啊,为什么最后有一个20呢,输出来大概是什么样子啊
%20s意思是这个字符串输出长度为20位,如果本身字符串多于20位,要全部输出,如果少于20位,在左边补空格
%20s 是按指定宽度(20)写入字符串
格式化读写函数fscanf和fprintf
fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的调用格式为:
fscanf(文件指针,格式字符串,输入表列);
fprintf(文件指针,格式字符串,输出表列);
例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
用fscanf和fprintf函数也可以完成例10.6的问题。修改后的程序如例10.7所示。
【例】用fscanf和fprintf函数
#include
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->
addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\n\nname\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age,
qq->addr);
fclose(fp);
}
本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。
fscanf,sscanf,fprintf,sprintf之间的区别是什么,各有什么具体的应用?
f开头代表 file
s开头代表 string
可以这么理解.
什么都不带的, 在标准 键盘 屏幕(控制台) 出入输出.
fscanf,sscanf,fprintf,sprintf还有scanf,printf
共同点是都是格式化输入/输出用的,它们的格式化方法/通配符都是一样的。
不同之处:
f打头的是文件I/O
s打头的是字符串I/O
俩字头都不带的是屏幕con的I/O
c语言 ,fread,fwrite和fscanf,fprint不知格式化方式和二进制方式的区别
fread 和fscanf都是读函数
fwrite和fprintf都是写函数。
原理类似 以fread和fscanf对比举例
fread是不管文件中什么内容,直接读到内存中, 不考虑格式。
而fscanf在读的时候, 第一步要做的 和fread相同,先读取字符到内存中,然后要解析格式字符串,根据格式字符串,去判断读到的字符,和格式字符串是否相符,如果相符,再转换成对应的变量类型,存到参数指针中。
比如分析格式字符串为%d,那么就要判断读到的字符是不是0~9之间的,是的话 再读下一个,直到读到不是0~9之间的字符。 最后 再把读到的字符,转为整型。
由于有这些判断,转换,所以效率自然低。
至于文件打开的方式是文本或者二进制, 和使用哪个函数没太多关系
一般fscanf用于文本,而fread用于二进制。 但并非绝对,二进制也可以用fscanf,而文本也一样可以用fread的。
fread,fwrite和fscanf,fprintf有什么不同?
包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。
因此你的txt文件,里面是英文段落,这里面只有字符,而没有像其他形式如图形,那么你的txt就是一个文本文件。
fread,fwrite是对二进制文件进行读写的函数,而fscanf,fprintf是从磁盘文件中读写(可以是二进制,也可以是其他形式的文件)
以上是我的建议,希望对你有所帮助
fscanf和fprintf干嘛用的?是输入内容到文件和输出文件内容到屏幕吗?
你是指C/C++语言范畴吧fscanf可以理解为按指定格式从文件流或字符串中解析出数据fprintf可以理解为按指定格式将数据写入到文件或屏幕 如果在matlab中,则是载入文件中的数据和写出到文件或command窗体