c-有没有一种方法可以用gdb的相对路径进行fopen



我正在尝试使用相对路径执行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;
}

我尝试了两种方法:

  1. 使用gcc编译代码,然后使用运行/a
  2. 使用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。

最新更新