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

 我来答
hwd0312
2015-10-25 · TA获得超过4336个赞
知道小有建树答主
回答量:1043
采纳率:100%
帮助的人:166万
展开全部

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;
}

   

夙婕史和暖
2020-07-14 · TA获得超过3631个赞
知道大有可为答主
回答量:3095
采纳率:26%
帮助的人:209万
展开全部
fscanf和fprintf一般读入的是文本,通常不用fscanf和fprintf对二进制文件进行读入,输出。
而fread和fwrite则经常被用在对二进制文件的读入,输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ly611718
2011-08-20
知道答主
回答量:10
采纳率:0%
帮助的人:9.9万
展开全部
会顺序自动后移,运行一下 groty 的程序,就可以发现。另外你也可以利用fseek来实现移动文件指针。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
groty
2011-08-20 · TA获得超过183个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:339万
展开全部
不会
追问
那如何用fprintf函数实现每写一个字符(fprintf(fp,"%c",ch)),使指针往后移一个字符?(即 能不断地写入字符而不是覆盖)
追答
没明白你的意思,你看一下msdn的例子把

/* FPRINTF.C: This program uses fprintf to format various
* data and print it to the file named FPRINTF.OUT. It
* then displays FPRINTF.OUT on the screen using the system
* function to invoke the operating-system TYPE command.
*/

#include
#include

FILE *stream;

void 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( "type fprintf.out" );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式