C中没有足够的内存错误

Sam*_*rai 0 c memory file-io

我是C的新手.我是C中的一个文件.但是当我试图在代码下运行时,我得到的内存错误不够.我无法理解这个问题.我清除了我的临时文件夹,但仍然存在错误.请帮忙.

File *logfile;
logfile = fopen ("sample.txt","a+");
printf("\n logfile=%d\n",logfile);
if (!logfile)
 {
  perror("Error");
  exit(EXIT_FAILURE);
 }
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

您应该始终要求编译器为您提供所有警告.有了gcc它意味着将-Wall -Wextra选项传递给gcc编译器.

如果你这样做,你的编译器会遇到很多错误(通过发出警告或错误消息):

  1. 你错过了#include <stdio.h>指令
  2. 你应申报FILE* logfile;File *logfile;在标识符案件显著.
  3. 您对通话printf是错误的,因为logfile不是int作为%d格式说明就是了.它是一个指针(指向抽象数据结构),因此如果您想要printf它,请使用%p.你不会从它的地址知道一个fopen-ed FILE*句柄(对你来说唯一重要的是,如果结果fopen是否NULL存在).

一般建议是改进源代码,直到您不再收到编译器的警告.

您还应该学会使用调试器(如gdb).然后用调试信息编译,例如gcc -Wall -Wextra -g yoursource.c -o yourprog

如果你是一个Linux系统上(上gccgdb非常常用的工具)的valgrind,straceltrace公用事业往往是有用的.