fscanf和fprintf,fscanf和fscanf_s

http://www.itjxue.com  2023-01-08 05:38  来源:未知  点击次数: 

fprintf()函数和fscanf()函数会使文件指针向后移动吗?

fprintf()函数和fscanf()函数会使文件指针向后移动。

int?fprintf (FILE*?stream,?const char*format, [argument])

其中,FILE*stream为文件指针,const char*?format以什么样的格式输出,[argument]为输入列表。

例子:

#include?stdio.h

#include?stdlib.h

#include?process.h

FILE*?stream;

int?main(void)

{

????int?i?=?10;

????double?fp?=?1.5;

????char?s[]?=?"this?is?a?string";

????char?c?=?'\n';

????stream?=?fopen("fprintf.out",?"w");

????fprintf(stream,?"%s%c",?s,?c);

????fprintf(stream,?"%d\n",?i);

????fprintf(stream,?"%f\n",?fp);

????fclose(stream);

????system("typefprintf.out");

????return?0;

}

屏幕输出:

this?is?a?string

10

1.500000

函数名:?fscanf

功 能:?从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

例子:

#include?stdlib.h

#include?stdio.h

int?main(void)

{

int?i;

printf("Input?an?integer:");

/*read?an?integer?from?the?standard?input?stream*/

if(fscanf(stdin,"%d",i))

printf("The?integer?read?was:%d\n",i);

else

{

fprintf(stderr,"Error?reading?an\

integer?from?stdin.\n");//返回EOF如果读取到文件结尾。

exit(1);

}

return0;

}

fscanf和fprintf

int

fscanf(FILE*stream,

constchar*format,

[argument...]):

FILE

*stream:文件指针

char

*format:输入格式

[argument...]:附加参数列表

fscanf()的功能是从一个流中执行格式化输入,fscanf遇到

空格

和换行时结束,注意空格时也结束。fgets的区别在于,fgets遇到空格不结束。

返回值

为整形,含义为读入的参数的个数,失败则返回EOF(-1)。

案例代码:

//...

#include stdio.h

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 stdio.h

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

fscanf、fprintf读写二进制文件

1. myData和yourData两个文件的大小;

2. 用记事本方式(或文本方式)打开myData和yourData, 看是否出现乱码.

3. 用UltraEdit打开myData和yourData,对比一下结果.

写读二进制文件,参考如下:

#includeiostream

#define N 10000

using namespace std;

void write()

{

int i, a[N];

for(i = 0; i N; i++)

a[i] = i;

FILE *fp;

fp = fopen("yourData", "w");

for(i = 0; i N; i++)

fprintf(fp, "%d ", a[i]);

fclose(fp);

}

void read()

{

FILE *fp;

fp = fopen("yourData", "r");

int i, a[N];

for(i = 0; i N; i++)

fscanf(fp, "%d", a[i]);

fclose(fp);

for(i = 0; i N; i++)

cout a[i] endl;

}

int main()

{

write();

read();

return 0;

}

关于C/C++中,fprintf和fscanf的问题!

二者在c语言和c++中的功能是相同的。

1

printf。

c语言的标准格式化输出函数。其调用格式为

int

printf(char

*

format_string,

...);

参数个数不定,依据第一个参数格式字符串中的格式字符,决定后续有多少个参数。

printf会按照格式字符串中的指定的规则,将自身及后续参数值输出到标准输出。

返回值为实际输出变量的个数。

2

fprintf。

c语言的标准格式化输出到文件函数。调用格式为

int

fprintf(file

*fp,

char

*

format_string,

...);

与printf类似,也是根据格式字符串将后续参数输出,不过目标不是固定的标准输出,而是由fp指定的文件。

所以,fprintf的第一个参数设置为stdout时,与printf功能相同。

3

以上两个函数,在c++中同样支持,使用方法相同。不过c++中更推荐使用流对象cout来执行输出。同时使用流对象类fstream来执行文件的操作。

(责任编辑:IT教学网)

更多

相关Flash实例教程文章

推荐Flash实例教程文章