我正在尝试使用相对路径执行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;
}
我尝试了两种方法:
- 使用gcc编译代码,然后使用运行/a
- 使用gdb构建&在vscode上运行,设置完全来自https://medium.com/@GorvGoyl/run-debug-tellisenses-c-in-vscode-within-5分钟-3ed956e059d6
我尝试过将文件名更改为几个内容,结果如下:
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);
}
在使用printf(3(和exit(3(之前,请阅读它们的文档
当然,还要阅读GCC和GDB的文档。
我建议用gcc -Wall -Wextra -g foo.c -o foo
编译您的foo.c
在Linux上,还可以考虑使用strace(1((当然读syscalls(2(…(以了解程序的行为。
如果您使用其他操作系统或编译器,请阅读编译器和操作系统的文档。对于Windows,请参阅WinAPI。