相当弱的一个问题,关于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可能未保存