读书人

相当弱的一个有关问题关于fread,fwr

发布时间: 2012-03-05 11:54:01 作者: rapoo

相当弱的一个问题,关于fread,fwrite
用fwrite写下面格式内容到test文件
11111111111
22222222222
33333333333

再用fread读出上面内容写入3个char数组
另外要求判断文件是否存在,存在就覆盖写
谢谢

[解决办法]
#include <unistd.h>
#include <stdio.h>
int main()
{
char *a[]={ "11111111111 ", "22222222222 ", "33333333333 "};
char *filename= "test.txt ";
FILE *file;
if(access(filename,F_OK)==0) //文件存在
printf( "EXIST!\n ");
file=fopen(filename, "w "); //以写方式打开,文件存在则截断成0长度(覆盖).
if(!file)return -1;
fprintf(file, "%s\n%s\n%s\n ",a[0],a[1],a[2]);
fclose(file);
}

[解决办法]
#include <unistd.h>
#include <stdio.h>
int main()
{
char *a[]={ "11111111111 ", "22222222222 ", "33333333333 "};
char *filename= "test.txt ";
FILE *file;
char buf[128];
char b[3][32];
if(access(filename,F_OK)==0) //文件存在
printf( "EXIST!\n ");

file=fopen(filename, "w "); //以写方式打开,文件存在则截断成0长度(覆盖).
if(!file)return -1;
fprintf(file, "%s\n%s\n%s\n ",a[0],a[1],a[2]);
fclose(file);


file=fopen(filename, "r "); //以读方式打开,
if(!file)return -1;
while(fgets(buf,sizeof(buf),file)!=NULL)
printf( "%s ",buf);
fclose(file);

file=fopen(filename, "r "); //以读方式打开,
if(!file)return -1;
memset(buf,0,sizeof(buf));
memset(b,0,sizeof(b));
fread(buf,sizeof(buf),1,file); //fread函数是按要求来读取都少个字节的.不能按行读取,要想按行读取,就要现读取出来后自己再分行了
sscanf(buf, "%[^ '\n ']\n%[^ '\n ']\n%[^ '\n ']\n ",b[0],b[1],b[2]); //自己分行.
printf( "%s\n%s\n%s\n ",b[0],b[1],b[2]);
fclose(file);

int i=0;
file=fopen(filename, "a+ "); //以追加方式打开,文件不存在则建立
if(!file)return -1;
for(i=0;i <3;i++)
fprintf(file, "%s\n ",a[i]);
fclose(file);
}

数据的输入输出函数很多,用发也很多,很多的用法要考自己去摸索学习了.

read
write

fread
fwrite

fscanf
fprintf

sscanf
sprintf

fgets
fputs

gets
puts

fgetc
fputc

getc
putc

getchar
putchar


[解决办法]
#include <unistd.h>
是linux上的吧,若是,写完一个文件后最好调用 system ( "sync " ),否则立即RESET可能未保存

读书人网 >C语言

热点推荐