user-0 提问: 刚解除不常时间，问问fopen用法

回复:
user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

user: user-2
content: 我以前写的例子 你看看 #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <stdbool.h> // //实现魔塔地图读取器 ，地图编辑器 编辑好地图后存入txt文件  本程序实现读取 // bool write_map(char *filename,char (*pos)[14]) {     FILE * fd;     int i, j ;     fd = fopen(filename,"w");      for(i = 0 ; i < 14 ; i++)         for(j = 0; j < 14 ;j++)                   fprintf(fd,"%d ",pos[i][j]);//必须有空格 要不读的时候会出问题      fclose(fd);      return true;  } bool read_map(char *filename,char (*pos)[14]) {     FILE * fd;     int i, j ;     fd = fopen(filename,"r");      for(i = 0 ; i < 14 ; i++)         for(j = 0; j < 14 ;j++){                    fscanf(fd,"%d",&pos[i][j]);         }     fclose(fd);      return true; } int main() {     int i ;     int j ;      int8_t pos[14][14] ;     int8_t pos1[14][14] ;    read_map("E:\\write.txt",pos1);      for(i = 0 ; i < 14 ;i++)         for(j = 0 ; j < 14 ;j++){             printf("%d\n",pos1[i][j]);         }    // write_map("E:\\wtite.txt",pos1);      return 0; }

user: user-3
content: 你的编译器或者是配置有问题，可以试试Code::Blocks(http://www.codeblocks.org/)。  引用 5 楼 xlshu 的回复:[quote=引用 2 楼 turingo 的回复:]  #include <stdio.h>  FILE* fp1; FILE* fp2; int a[5],i;  int main() { fp1=fopen("c:\\1.txt","r"); fp2=fopen("c:\\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); return 0; }   [quote=引用 楼主 xlshu 的回复:] 读1.txt里面的内容，另存到2.txt里面，求在下面程序上修改。  fp1、fp2应该定义成什么类型的？  其他地方是不是有问题，编译没有问题，运行出错  #include <stdio.h> int a[5],i;  void main() { fp1=fopen("c:\1.txt","r"); fp2=fopen("c:\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); }[/quote]  程序看懂了，运行不出来，编译没有错误，ctrl+f5出错。错误如下：  6363.obj : error LNK2005: _main already defined in 8989.obj 6363.obj : error LNK2005: "struct _iobuf * fp1" (?fp1@@3PAU_iobuf@@A) already defined in 8989.obj 6363.obj : error LNK2005: "int i" (?i@@3HA) already defined in 8989.obj 6363.obj : error LNK2005: "int * a" (?a@@3PAHA) already defined in 8989.obj Debug/8989.exe : fatal error LNK1169: one or more multiply defined symbols found 执行 link.exe 时出错.  8989.exe - 1 error(s), 0 warning(s)[/quote]

user: user-0
content: 引用 2 楼 turingo 的回复: #include <stdio.h>  FILE* fp1; FILE* fp2; int a[5],i;  int main() { fp1=fopen("c:\\1.txt","r"); fp2=fopen("c:\\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); return 0; }   [quote=引用 楼主 xlshu 的回复:] 读1.txt里面的内容，另存到2.txt里面，求在下面程序上修改。  fp1、fp2应该定义成什么类型的？  其他地方是不是有问题，编译没有问题，运行出错  #include <stdio.h> int a[5],i;  void main() { fp1=fopen("c:\1.txt","r"); fp2=fopen("c:\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); }[/quote]  程序看懂了，运行不出来，编译没有错误，ctrl+f5出错。错误如下：  6363.obj : error LNK2005: _main already defined in 8989.obj 6363.obj : error LNK2005: "struct _iobuf * fp1" (?fp1@@3PAU_iobuf@@A) already defined in 8989.obj 6363.obj : error LNK2005: "int i" (?i@@3HA) already defined in 8989.obj 6363.obj : error LNK2005: "int * a" (?a@@3PAHA) already defined in 8989.obj Debug/8989.exe : fatal error LNK1169: one or more multiply defined symbols found 执行 link.exe 时出错.  8989.exe - 1 error(s), 0 warning(s)

user: user-4
content: 引用 3 楼 xlshu 的回复: 程序编译没有错，但是提示这个  打开的文件路径 '\' 改成用"\\" ,"\"注意逃逸字符！  另外打开检查返回值fp1 fp2 确认是否已经成功打开，然后在开始其他操作！

user: user-0
content: 程序编译没有错，但是提示这个

user: user-3
content: #include <stdio.h>  FILE* fp1; FILE* fp2; int a[5],i;  int main() { fp1=fopen("c:\\1.txt","r"); fp2=fopen("c:\\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); return 0; }  引用 楼主 xlshu 的回复:读1.txt里面的内容，另存到2.txt里面，求在下面程序上修改。  fp1、fp2应该定义成什么类型的？  其他地方是不是有问题，编译没有问题，运行出错  #include <stdio.h> int a[5],i;  void main() { fp1=fopen("c:\1.txt","r"); fp2=fopen("c:\2.txt","w"); for (i=0;i<5;i++) fscanf(fp1,"%d",&a[i]); for (i=0;i<5;i++) fprintf(fp2,"%d",a[i]); }

user: user-5
content: FILE *fp1,*fp2;  建议先学习关于文件操作的知识再来编程，欲速则不达