1。有人见过这种情况吗?turbo c2.0
error:character constant too long in function main
出错行为:ch!=CNTL_Z,CNTL_Z为宏,值为'/032'2.有关于文件读写缓冲区问题
用read和write读文件,假设将缓冲区设为512,而文件只有100字节,则用write写入另外一个文件时就会在尾部有乱码,如何解决?
如要单个字节地读,则如果是大写字母,因其占两个字节,以至于读不出来,程序如下:
#include <stdio.h>
#include <fcntl.h>
#define SIZE 512
main(argc,argv)
int argc;
char** argv;
{
  char ch[SIZE];
  int fold;
  int fnew;  if((fold=open("kate.txt","r"))<0)
  {
    printf("can't open the source file!");
    exit(1);
  }  if((fnew=open("kate2.txt","w"))<0)
  {
    printf("can't open the destinate file!");
    exit(1);
  }  while(read(fold,&ch,512)>0)
  {
    write(fnew,&ch,512);
  }  close(fnew);
  close(fold);
}

解决方案 »

  1.   


      while(read(fold,ch,512)>0)
      {
        write(fnew,ch,512);
      }
      

  2.   

    谁说大写字母占两个字节?
    ASCII码只占一个字节,而且小于128
      

  3.   

    1、应当为'\032'
    2、while(read(fold,&ch,512)>0)
      {
        write(fnew,&ch,512);
      }
    应改为:
      while(read(fold,ch,512)>0)
      {
        write(fnew,ch,512);
      }
      

  4.   

    2、while(read(fold,&ch,512)>0)
      {
        write(fnew,&ch,512);
      }
    应改为:
      while(read(fold,ch,512)>0)
      {
        write(fnew,ch,512);
        memset(ch,0,sizeof(ch));
      }
      

  5.   

    没听说过大写字母占两个字节!!!
    其实read()函数返回了实际读入的字符个数,而你的write 函数可以依此进行
    写入操作,避免了写入乱码!!!!