一个关于写入文件的问题
程序代码:
#include <stdio.h> #include <string.h> #define MAX_LEN 800 int main() { char* ch[MAX_LEN]; memset(ch,0,MAX_LEN); FILE* pfile=fopen("FILE.c","r");//打开源文件 if(NULL==pfile) printf("Open file failed\n"); else printf("Open file success\n"); FILE* cfile=fopen("test.txt","w+");//打开目标文件 fseek(pfile,0,SEEK_END); long flen=ftell(pfile); rewind(pfile); printf("This file %d bytes\n",flen); long read=fread(ch,1,flen,pfile);//读入内存 printf("Have been read %d bytes\n",read); size_t write=fwrite(ch,1,flen,cfile); // printf("Have been writen %s bytes\n",write); fclose(pfile); fclose(cfile); return 0; }两个问题:
1、如果加入红色代码,程序会停止
2、去掉红色代码,程序运行正常。但是显示读入的字节数(462 bytes)少于源文件(FILE.c)的字节数(495 bytes).
但是查看test.txt发现实际上写入了527 bytes,并且后面一对空白字符。