请问一个关于读写文件的有关问题
请教一个关于读写文件的问题
#include <stdio.h>
#include <string.h>
int main()
{
FILE *read;
int i;
int in[16]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6};
int out[16];
read=fopen("r.txt","wt+");
fwrite(in,sizeof(int),16,read);
fread(out,sizeof(int),16,read);
for(i=0;i<16;i++)
printf("%d;",out[i]);
fclose(read);
return 0;
}
我想实现16位数组的读和写,为什么写入的都是乱码,而且读出来的也不对?
------解决方案--------------------
第一,fwrite(in,sizeof(int),16,read);这个函数的功能是把大小为sizeof(int)*16的内存写入到文件中。
第二,访问文件时有一个位置指针,每次读写都是在当前位置指针处操作,操作完成后移动到刚刚操作的部分的后面。
------解决方案--------------------
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
DESCRIPTION
The function fread() reads nmemb elements of data, each size bytes long, from the stream pointed to by stream, storing them at the location given by ptr.
The function fwrite() writes nmemb elements of data, each size bytes long, to the stream pointed to by stream, obtaining them from the location given by ptr.
------解决方案--------------------
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决方案--------------------
一个文件被打开之后,只能进行一种操作,比如“写”。你如果想读的话,必须先把这个文件关了。然后再打开,再进行“读”操作。不可以打开一个文件,然后边写边读。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *read;
int i;
int in[16]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6};
int out[16];
read=fopen("r.txt","wt+");
fwrite(in,sizeof(int),16,read);
fread(out,sizeof(int),16,read);
for(i=0;i<16;i++)
printf("%d;",out[i]);
fclose(read);
return 0;
}
我想实现16位数组的读和写,为什么写入的都是乱码,而且读出来的也不对?
------解决方案--------------------
第一,fwrite(in,sizeof(int),16,read);这个函数的功能是把大小为sizeof(int)*16的内存写入到文件中。
第二,访问文件时有一个位置指针,每次读写都是在当前位置指针处操作,操作完成后移动到刚刚操作的部分的后面。
------解决方案--------------------
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
DESCRIPTION
The function fread() reads nmemb elements of data, each size bytes long, from the stream pointed to by stream, storing them at the location given by ptr.
The function fwrite() writes nmemb elements of data, each size bytes long, to the stream pointed to by stream, obtaining them from the location given by ptr.
------解决方案--------------------
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决方案--------------------
一个文件被打开之后,只能进行一种操作,比如“写”。你如果想读的话,必须先把这个文件关了。然后再打开,再进行“读”操作。不可以打开一个文件,然后边写边读。