日期:2014-05-16  浏览次数:20797 次

一个很简单的问题 关于文件打开出错
源码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <strings.h>
#define BUF 1024
int main(int argc,char **argv)
{
FILE *from_fd,*to_fd;

  if(argc!=3)
  {
  printf("argument error");
  exit(1);
  }
  if((from_fd=fopen(argv[1],"w+b"))==NULL)
  {
  printf("open %s failure\n",argv[1]);
  exit(1);
  }
  if((to_fd=fopen(argv[2],"w+b"))==NULL);
  {  
  printf("OPEN FILE %s ERROR\n",argv[2]);
  exit(1);
  }
}
运行时:
qust@qust-K42JZ:~/test$ gcc fopen_file.c -o fopen_file
qust@qust-K42JZ:~/test$ ./fopen_file test.c newfile
OPEN FILE newfile ERROR
test.c newfile这两个文件都是不存在的,创建这两个文件为什么会出错呢??
但实际在目录下创建了这两个文件。望大家指教,谢谢!

------解决方案--------------------
if((to_fd=fopen(argv[2],"w+b"))==NULL);
去掉后面的分号
------解决方案--------------------
楼上正解,因为无论如何,你都会走下面的
printf("OPEN FILE %s ERROR\n",argv[2]);
exit(1);