首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教在用fwrite的时候为什么每一个字符后面都接了一个空格

2013-01-28 
请问在用fwrite的时候为什么每一个字符后面都接了一个空格?#include widget.hWidget::Widget(QWidget *p

请问在用fwrite的时候为什么每一个字符后面都接了一个空格?
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    file();
}

Widget::~Widget()
{
    
}

int readfile(FILE *fp,char *buff,int len,int n)
{
    if((fp=fopen("E:\\image.003","rb"))==NULL)
       {
         printf("Cannot read file\n");
       }
        else
        {
             fseek(fp,n*BUF_SIZE,SEEK_SET);
           len =  fread(buff,1,1024*1024,fp);
        }
    return len;
}

int writefile(FILE *fp1,char *ab,char*buff,int len,int m)
{

        if((fp1=fopen(ab,"a+"))==NULL)
        {
            printf("Cannot write file\n");
        }
        else
        {
            fwrite(buff,1,len,fp1);
        }

    fclose(fp1);
}

int name(int m,char *ab)
{
    char *ac="E:\\vm\";
    char *b="name.";
    int n=m;
    sprintf(ab,"%s%s%03d",ac,b,n);
    qDebug()<<ab;
}

int Widget::file()
{
    int num = 1;
    int n = 1;
    int m = 0;
    char ab[1024];
    //char buff[1024*1024];

    char *buff;
    buff=(char*)malloc(BUF_SIZE*10);
    int size = BUF_SIZE*10;
    qDebug()<<"len";
    FILE *fp;
    FILE *fp1;
    int len = 0;

    if((fp=fopen("E:\\image.003","rb"))==NULL)
       {
         printf("Cannot read file\n");
       }
  //  while (1)
   //  while (feof(fp) == 0)
   // {
   //     while (n <= 10)
  //    {
           fseek(fp,m*size,SEEK_SET);
           len =  fread(buff,1,size,fp);
           qDebug()<<buff;

           // 512 * 512 = 56k
           if (feof(fp) != 0)
           {


             //break;
           }
            else
           {
            name(num,ab);
            num++;
            n=1;
           }
         //  len = readfile(fp,buff,len,m);
           len = size;
           writefile(fp1,ab,buff,len,m);
           m++;
           memset(buff,0,sizeof(buff));
           n++;
 //      }

//   }

     free(buff);
    return 0;
}

[解决办法]
FILE *fp1;
writefile(fp1,ab,buff,len,m);

fp1没有赋值。
[解决办法]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose  //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

[解决办法]
你用的事C风格的字符串,C风格的字符串是以空格结束的

热点排行