c语言-求教两个C语言程序fseek(fp,0L,0)和rewind(fp)区别

问题描述

求教两个C语言程序fseek(fp,0L,0)和rewind(fp)区别

程序一:
#include
main()
{
FILE fp;
int i,a[6]={1,2,3,4,5,6},k;
fp=fopen("data.dat","w+");
for(i=0;i<6;i++)
{
fseek(fp,0L,0);
_ _ fprintf(fp,"%dn",a[i]);__
}
rewind(fp);
_ fscanf(fp,"%d",&k);_
fclose(fp);
printf("%dn",k);
}
/

程序运行结果:
6
/
程序二:
#include
main()
{
FILE *fp;
int i,a[6]={1,2,3,4,5,6},k;
fp=fopen("data.dat","w+");
fprintf(fp,"%dn",a[0]);
for(i=1;i<6;i++)
{
rewind(fp);
fprintf(fp,"%dn",a[i]);
}
rewind(fp);
fscanf(fp,"%d",&k);
fclose(fp);
printf("%dn",k);
}
/

程序运行结果:
6
*/

=====疑问1: fseek(fp,0L,0);和rewind(fp);有什么区别吗?
疑问2:参考答案说程序一退出循环后,文件fp中的数据为:654321;而文件二退出循环后,文件fp中的数据只保留了6??为什么呢?
疑问3:如何打印出退出循环后,文件fp中的数据呢? printf("%dn",fp);可以吗?但运行程序貌似结果不对

解决方案

fseek(fp,0L,0);和rewind(fp);有什么区别吗
没区别,后者是前者的特例。

两个程序是否一样,取决于你的数据文件,你不但有读,也有写入

解决方案二:

光看函数名,fseek是文件的游标操作;rewind是倒带操作
内涵不一定,结果应该是一样的。
当磁带作为储存介质时,rewind可能是启动磁带机的倒带操作,而fseek未必能起作用

时间: 2024-10-04 20:42:13

c语言-求教两个C语言程序fseek(fp,0L,0)和rewind(fp)区别的相关文章

c语言-两道C语言编程题:求教各位大神

问题描述 两道C语言编程题:求教各位大神 两元一瓶啤酒,两个啤酒瓶换一瓶啤酒,四个啤酒瓶盖换一瓶啤酒,输入的金额可以买几瓶. 输入一串字符串,写两个函数,第一个函数使输入的字符串全都后移一位,第二个函数将字符串中的字母大写换小写,小写换大写?. 拜托各位了 谢谢~ 解决方案 第一个问题描述不清,不知道是不是可以借啤酒瓶和瓶盖,我的程序按照不可以编写: #include <stdio.h>int foo(int money){ int c = money / 2; int c1 = 0; int

c语言问题-小白c语言求教,求大神解答

问题描述 小白c语言求教,求大神解答 #include int main(void) { int years,days; years=21; days=years*365; printf(" The years is %d. The days are %d. ".years,days); Return 0; } 程序无法运行,提示错误.求大神解答.小弟在这里先谢谢啦. 解决方案 printf(" The years is %d. The days are %d. "

c语言-用C语言编写能进行四则运算的程序

问题描述 用C语言编写能进行四则运算的程序 我想用C语言编一个能进行简单的四则运算的程序,应该怎么写,请详细解释一下输入和计算部分 解决方案 实现四则运算是比较简单的,你可以使用两个栈,一个栈用来存贮操作的数字(0~n),一个栈用来存储操作符(+-等).你先把四则运算表达式存为一个字符串,然后遍历各个字符,如果是数字,那就存起来,如果是操作符,那就与前一个操作符比较,看看优先级是不是比前一个大,如果是,那就存起来,如果不是,那就把数字栈里的前两个数按照前一个操作符进行运算.结果用一个变量保存起来

c语言-C语言求教,进制转换代码

问题描述 C语言求教,进制转换代码 请大家帮我看看我的程序有什么错误,感激不尽! /* num:数字 i:进制数 k:总位数 */ #include"stdio.h" #include"math.h" int firsttext(int num,int i){ int k; for(k=1;;k++){ if(num<((int)pow((float)i,(float)k))) break; } --k; return k; } int printouteve

c语言-C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看

问题描述 C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看 #include #include #define N 8 typedef struct list { char c; struct list *next; } SLIST; SLIST *creat(char *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i { q=(SLIST *)malloc(sizeof(SLI

矩阵-c语言中两个数组相乘的问题

问题描述 c语言中两个数组相乘的问题 #include #include #define OK 1 #define ERROR 0 #define MAXSIZE 100 //最多非0元素的个数 #define MAXR 50 //rpos所能处理的最大行数 #define MAXC 50 //系数矩阵相乘时,保留临时列结果的数组temp[MAXC] typedef struct NODE{ //定义稀疏矩阵结点 int i; int j; int data; } Node; typedef s

《C语言点滴》一1.2 程序猿和互联网

1.2 程序猿和互联网 C语言点滴 虽然你可以对电脑的硬件要求不高,但是对另外一个功能还是应该严重关切一下的,那就是联网功能.最方便的联网方式无疑就是3G联网方式了,可以做到随时随地上网.我在北京上班的时候,地铁车厢里有时会有人拿着笔记本通过3G在上网.因为我还没有忙到这种程度,所以一般我在地铁上经常干的就是防范小偷.应付要饭的.还有偷眼看看周围的美女. 有了互联网,就有了一个巨大的宝藏,你需要了解一些知识,同时还需要能够利用一些工具从这个巨大的宝藏中获得你需要的信息和资源.本节的"搜索引擎&q

单链表-C语言求教merge(struct node *p,struct node *q)哪里出错了?

问题描述 C语言求教merge(struct node *p,struct node *q)哪里出错了? #include "stdio.h" #include "stdlib.h" struct node { int data; struct node next; }; struct node *creat(int *a) { struct node*h,*p,*q; int i; h=p=(struct node)malloc(sizeof(struct nod

C语言实现两个递减数列中寻找某一个数_C 语言

本文实例讲述了C语言实现两个递减数列中寻找某一个数的方法,分享给大家供大家参考之用.具体方法如下: 通常来说这道题算二分查找法中非常有难度的一题了. 题目如下: 一个数组是由一个递减数列左移若干位形成,比如{4, 3, 2, 1, 6, 5}是由{6, 5, 4, 3, 2, 1}左移两位,在这种数组中查找某一个数. 实现代码如下: int array[] = {4, 3, 2, 1, 6, 5}; const int size = sizeof array / sizeof *array; i