我正在尝试使用相对路径执行fopen()。该代码很简单:
#include <stdio.h>
#include <stdlib.h>
int main (void){
char filename[FILENAME_MAX]="test.txt";
FILE *fin;
if ((fin=fopen(filename,"r"))==NULL)
{
printf("File not found.");
exit(EXIT_FAILURE);
}
else
{
printf("opened!");
}
return 0;
}
我尝试了2种方法:
我尝试将文件名更改为几件事,结果如下:
char filename[FILENAME_MAX]="test.txt";
gcc:已开启!
gdb:找不到文件
char filename[FILENAME_MAX]=".\\test.txt";
gcc:已开启!
gdb:找不到文件
char filename[FILENAME_MAX]="C:\\fullfolderpath\\test.txt";
gcc:已开启!
gdb:已打开!
有没有一种方法可以在使用gdb时以相对路径打开txt文件?文件将与源代码和编译后的程序存储在同一目录中。
当fopen(3)失败时,至少要使用perror(3),当然还要阅读这些函数的文档。
所以代码:
if ((fin=fopen(filename,"r"))==NULL)
{
perror(filename);
printf("File not found.\n");
exit(EXIT_FAILURE);
}
我建议foo.c
用gcc -Wall -Wextra -g foo.c -o foo
在Linux上,还可以考虑使用strace(1)(当然也可以阅读syscalls(2) ...)来了解程序的行为。
如果您使用其他操作系统或编译器,请阅读编译器和操作系统的文档。对于Windows,请参考WinAPI。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句