我是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)
您应该始终要求编译器为您提供所有警告.有了gcc它意味着将-Wall -Wextra选项传递给gcc编译器.
如果你这样做,你的编译器会遇到很多错误(通过发出警告或错误消息):
#include <stdio.h>指令FILE* logfile;未File *logfile;在标识符案件显著.printf是错误的,因为logfile不是int作为%d格式说明就是了.它是一个指针(指向抽象数据结构),因此如果您想要printf它,请使用%p.你不会从它的地址知道一个fopen-ed FILE*句柄(对你来说唯一重要的是,如果结果fopen是否NULL存在).一般建议是改进源代码,直到您不再收到编译器的警告.
您还应该学会使用调试器(如gdb).然后用调试信息编译,例如gcc -Wall -Wextra -g yoursource.c -o yourprog
如果你是一个Linux系统上(上gcc和gdb非常常用的工具)的valgrind,strace和 ltrace公用事业往往是有用的.
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |