C 数组中的文件指针

C 数组中的文件指针,c,arrays,file-io,gdb,C,Arrays,File Io,Gdb,我正在编写一个以文件为参数的程序,但这对于调试GDB来说相当烦人。我宁愿将文件名存储在数组中,并修改程序以读取该数组而不是argv[]值,而不是每次在GDB中启动时都必须重新键入文件列表 我从 FILE*[5] inpFiles; inpFiles[0] = &file1.txt; 但这一切都错了。我需要获得对每个输入文件的某种引用,以便获得其内存地址 我该怎么做?谢谢。您可以在.gdbinit中定义一个GDB命令,这样就不需要修改生产代码了。 例如,在工作目录中的~/.gdbinit

我正在编写一个以文件为参数的程序,但这对于调试GDB来说相当烦人。我宁愿将文件名存储在数组中,并修改程序以读取该数组而不是argv[]值,而不是每次在GDB中启动时都必须重新键入文件列表

我从

FILE*[5] inpFiles;
inpFiles[0] = &file1.txt;
但这一切都错了。我需要获得对每个输入文件的某种引用,以便获得其内存地址


我该怎么做?谢谢。

您可以在.gdbinit中定义一个GDB命令,这样就不需要修改生产代码了。 例如,在工作目录中的~/.gdbinit或.gdbinit中添加以下行

define do
    run file1.txt file2.txt file3.txt file4.txt file5.txt
end

然后,在GDB中,只需键入命令do,GDB就会为您运行runfile1.txt file2.txt file3.txt file4.txt file5.txt。

您可以在.gdbinit中定义GDB命令,这样您就不需要修改生产代码。 例如,在工作目录中的~/.gdbinit或.gdbinit中添加以下行

define do
    run file1.txt file2.txt file3.txt file4.txt file5.txt
end
然后,在GDB中,只需键入do命令,GDB就会为您运行run file1.txt file2.txt file3.txt file4.txt file5.txt。

将写入一个文件*数组:

FILE *inpFiles[5];
这可以存储从fopen或类似函数返回的值;它不存储文件名

您可以将文件指针存储到&file1表示的结构中,也可以创建一个新结构来存储名称和打开的文件指针,尽管您可能需要指定模式;默认情况下可能是r或rb

所以,向自己明确你到底想做什么。您可以创建一个文件指针数组,或者一个包含文件指针的结构数组。但是您必须决定如何使用它,以及语义是什么

这假定修改程序比更好地使用GDB更好。如果你能学会更有力地使用GDB的功能,那么这是一个更好的主意

例如,可以使用元字符轻松指定文件:

run debug?.txt
文件的位置是debug0.txt、debug1.txt、

其他答案也提出了备选方案。

将写入一个文件*数组:

FILE *inpFiles[5];
这可以存储从fopen或类似函数返回的值;它不存储文件名

您可以将文件指针存储到&file1表示的结构中,也可以创建一个新结构来存储名称和打开的文件指针,尽管您可能需要指定模式;默认情况下可能是r或rb

所以,向自己明确你到底想做什么。您可以创建一个文件指针数组,或者一个包含文件指针的结构数组。但是您必须决定如何使用它,以及语义是什么

这假定修改程序比更好地使用GDB更好。如果你能学会更有力地使用GDB的功能,那么这是一个更好的主意

例如,可以使用元字符轻松指定文件:

run debug?.txt
文件的位置是debug0.txt、debug1.txt、


其他答案也提供了一些替代方案。

您可以通过读取标准文件流0来解析包含每个文件的输入文件

所以你可以这样做:

 ./your_program < your_input_file

希望这有帮助。

通过读取标准文件流0,您可以解析包含每个文件的输入文件

所以你可以这样做:

 ./your_program < your_input_file

希望这能有所帮助。

您不能创建一个批处理文件来启动gdb会话,其中列出了一些文件吗?您可能需要一个本地的.gdbinit。您想存储文件数组还是文件名数组?如果是后者,你想要一些类似@laishiekai奇怪地删除的帖子的东西。在类似的情况下,我以前也这样做过,调试时这是一个非常合法的技巧。您不能创建一个批处理文件来启动gdb会话,其中列出了文件吗?可能您需要的是一个local.gdbinit。您想存储文件数组还是文件名数组?如果是后者,你想要一些类似@laishiekai奇怪地删除的帖子的东西。在类似的情况下,我以前也做过,在调试时这是一个非常合法的技巧。谢谢。这就是我要做的,因为我不必这样修改我的程序。谢谢。这就是我要做的,因为我不必这样修改我的程序。谢谢。fopen是我在获取该文件参考资料时丢失的大部分内容。谢谢。fopen是我在获取该文件的引用时丢失的大部分内容。