FILE *fp;int x[6]={1,2,3,4,5,6},i; fp=fopen("test.dat","wb"); fwrite(x,sizeof(int),3,fp); #include <stdio.h> main() { FI...

FILE *fp; int x[6]={1,2,3,4,5,6},i; fp=fopen("test.dat","wb"); fwrite(x,sizeof(int),3,fp)\u7684\u7ed3\u679c\u662f

fwrite(x,sizeof(int),3,fp);
\u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u6570\u636e\u5b58\u653e\u5728x\u4e2d\u3002
\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1asizeof(int)\u6bcf\u6b21\u5199\u5165\u4e00\u4e2a\u6574\u6570\u5927\u5c0f
\u7b2c\u4e09\u4e2a\u53c2\u6570\uff1a\u5199\u51653\u6b21\uff08\u5373\u5199\u51653\u4e2aint\u5927\u5c0f\uff09
\u7b2c\u56db\u4e2a\u53c2\u6570\uff1a\u6587\u4ef6\u53e5\u67c4\u3002
\u6240\u4ee5\u6587\u4ef6\u4e2d\u53ea\u5199\u4e863\u4e2a\u6574\u6570\u8fdb\u53d6\u3002
\u8bfb\u53d6\u7684\u65f6\u5019\uff0c\u540c\u6837\u4e5f\u8bfb\u53d6\u4e863\u4e2a\u6574\u6570\u3002\u4f46\u662fx\u6570\u7ec4\uff086\u4e2a\u6574\u6570\uff09\u4e2d\uff0c\u540e3\u4e2a\u6574\u6570\u4ece\u6765\u6ca1\u6709\u88ab\u4fee\u6539\u8fc7\u3002
\u5f53\u4f60printf\u8f93\u51fa\u65f6\uff0c\u4e5f\u4f1a\u628a\u540e3\u4e2a\u6574\u6570\u7684\u521d\u59cb\u503c\u8f93\u51fa\u7684\u3002

#include

void main(void)
{
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, "%d\n", a[i]);
}

rewind(fp);
fscanf(fp, "%d", &k);
fclose(fp);
printf("%d\n", k);
}
\u5c06\u4f60\u7684\u7a0b\u5e8f\u6574\u7406\u4e86\u4e00\u4e0b\uff0c\u624d\u660e\u767d\u8981\u600e\u4e48\u56de\u7b54\uff0c\u5199\u7a0b\u5e8f\u683c\u5f0f\u4e00\u5b9a\u8981\u6ce8\u610f\uff0c\u4e0d\u7136\u5f88\u96be\u7ef4\u62a4\u548c\u770b\u61c2

\u8be5\u7a0b\u5e8f\u5927\u81f4\u7684\u610f\u601d\u662f
\u4ee5\u8bfb\u5199\u65b9\u5f0f\u6253\u5f00\u4e00\u4e2a\u53eb\u201cdata.dat\u201d\u7684\u6587\u4ef6\uff0c\u5982\u679c\u5728\u4e0e\u76ee\u6807\u7a0b\u5e8f\u540c\u4e00\u76ee\u5f55\u4e0b\u6709\u8be5\u6587\u4ef6\uff0c\u624d\u8be5\u6587\u4ef6\u957f\u5ea6\u53d80\uff08\u5373\u88ab\u622a\u65ad\uff09\uff0c\u5982\u679c\u6ca1\u6709\u8be5\u6587\u4ef6\uff0c\u5219\u521b\u5efa\u4e00\u4e2a
\u5bf9\u8be5\u6587\u4ef6\u6267\u884c\u516d\u6b21\u64cd\u4f5c\uff0c\u7b2c\u4e00\u6b21\u8df3\u5230\u6587\u4ef6\u5f00\u5934\uff0c\u5e76\u5199\u5165a[0]\u5373\u6570\u5b570\uff0c\u7b2c\u4e8c\u6b21\u53c8\u8df3\u5230\u6587\u4ef6\u5f00\u5934\uff0c\u5e76\u5199\u5165a[1]\u5373\u6570\u5b571\uff0c1\u5c060\u8986\u76d6\u4e86\uff0c\u4ee5\u6b64\u7c7b\u63a8\uff0c\u7b2c\u516d\u6b21\u8fd8\u662f\u8df3\u5230\u6587\u4ef6\u5f00\u5934\uff0c\u5e76\u5199\u5165a[5]\u5373\u6570\u5b576\uff0c6\u5c06\u4e0a\u4e00\u4e2a\u6570\u5b575\u7ed9\u8986\u76d6\u4e86
rewind\u8868\u793a\u5c06\u6587\u4ef6\u6307\u9488\u91cd\u65b0\u6307\u5411\u201cdata.dat\u201d\u7684\u5f00\u5934\uff0c\u5728\u7b2c2\u4e2a\u64cd\u4f5c\u4e2d\uff0c\u6587\u4ef6\u6307\u9488fp\u6307\u5411\u4e86\u7b2c\u4e8c\u4e2a\u5b57\u8282\u7684\u4f4d\u7f6e\uff0c\u6240\u4ee5\u9700\u8981\u91cd\u65b0\u6307\u5411\u7b2c\u4e8c\u4e2a\u5b57\u8282\u7684\u4f4d\u7f6e\uff0c\u518d\u7528\u4e00\u6b21fseek(fp, 0L, 0);\u6548\u679c\u4e5f\u4e00\u6837
fscanf\u8868\u793a\u5c06fp\u6587\u4ef6\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\u8d4b\u503c\u4e8ek\uff0c\u6240\u4ee5\u7c7b\u540c\u4e8ek=6
\u6253\u5370k

\u8fd9\u65f6\u6253\u5f00"data.dat"\u6587\u672c,\u91cc\u9762\u7684\u5185\u5bb9\u5c31\u662f6

\u4f60\u8bf4\u4f60\u89c1\u8fc7\u90a3\u79cd\u8f93\u51fa123456\u7684\u9898\uff0c\u6050\u6015\u957f\u8fd9\u6837\uff0c\u4ed4\u7ec6\u6bd4\u5bf9\u4e00\u4e0b
#include

void main(void)
{
FILE *fp; int i, a[6]={1,2,3,4,5,6},k;

fp = fopen("data.dat", "w+");

for (i=0; i<6; i++)
{
#if 0
fseek(fp, 0L, 0);
fprintf(fp, "%d\n", a[i]);
#else
fprintf(fp, "%d", a[i]);
#endif
}

rewind(fp);
fscanf(fp, "%d", &k); //\u6ce8\u610f\u7f16\u8bd1\u5668\u628aint k\u5f53\u6210\u662f2\u5b57\u8282\u8fd8\u662f4\u5b57\u8282\uff0c4\u5b57\u8282\u624d\u53ef\u4ee5\u5b58\u4e0b12345678
fclose(fp);
printf("%d\n", k);
}

1.你这段程序本来就是错的,你rewind后,文件指针是返回文件头了,但是你打开文件文件的方式是只写,没有读的功能,所以不可能读出数据,你for循环打印的数据其实是你前面初始化的x。
2.如果用fwrite(x,sizeof(int),3,fp);只能将1、2、3写入文件。
完整修改数据如下:
#include <stdio.h>
int main()
{
FILE *fp;
int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","rwb");
int ii = fwrite(x,sizeof(int),6,fp);
rewind(fp);
int y[6]={0};
fread(y,sizeof(int),6,fp);
for(i=0;i<6;i++)
printf("%d",y[i]);
fclose(fp);
return 0;
}

函数名: rewind
功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。
rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET);[1]
用 法: void rewind(FILE *stream);
头文件: stdio.h
返回值:无

fread:

size_t fread(void *buffer, size_t size, size_t count, FILE *stream);
功 能:
从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count.如果调用成功则实际读取size*count字节
参 数:
buffer:用于接收数据的内存地址,大小至少是 size*count 字节.
size:单个元素的大小,单位是字节
count:元素的个数,每个元素是size字节.
stream:输入流
fwrite 和 fread 差不多。

扩展阅读:www.sony.com.cn ... paperpass免费入口 ... xboxone港版欧版美版区别 ... hp elitebook 840 ... matebook14 ... internet explorer 11 ... xbox series x ... flyff universe ... fclose fp ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网