如何解决有没有办法用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;
}
我尝试了2种方法:
- 使用gcc编译代码,然后使用./a 运行它
- 使用gdb构建并在vscode上运行,设置完全来自https://medium.com/@GorvGoyl/run-debug-intellisense-c-c-in-vscode-within-5-minutes-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文件?这些文件将与源代码和编译后的程序存储在同一目录中。
解决方法
如果perror(3)失败,请至少使用fopen(3),并且当然阅读这些功能的文档。
所以代码:
if ((fin=fopen(filename,"r"))==NULL)
{
perror(filename);
printf("File not found.\n");
exit(EXIT_FAILURE);
}
在使用它们之前先阅读printf(3)和exit(3)的文档。
我建议使用foo.c
编译您的gcc -Wall -Wextra -g foo.c -o foo
在Linux上,还可以考虑使用strace(1)(当然要读syscalls(2) ...)来了解程序的行为。
如果您使用其他操作系统或编译器,请阅读编译器和操作系统的文档。对于Windows,请参阅WinAPI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。