将输入文件名保存为字符串? C

Saving input file name as a string? C

我阅读了我能找到的所有主题,但找不到完全正确的答案 - 所以我希望这不会被视为重复。

我的作业需要读入一个文件,进行一些字符串比较,然后打印出该文件的名称。

非常基础,输出格式如下:

*File where answer was found*
**Input1.txt** < file name

有没有办法在读入文件时将文件名保存为字符串?我是 C 语言的新手,所以我找到的很多答案(从文件描述等中获取)都让我头疼。

谢谢!

编辑 - 对于我提供的信息不足,我深表歉意。我想太多了。我要找的只是:

char filename[] = "input1.txt";
FILE *input = fopen("input1.txt","r");

好吧,为了打开文件,您必须将其 name (char *) 作为参数传递给 fopen 或 open ...

所以为什么不保留该字符串(文件名),直到您完成查找关键字并在需要时显示它。

例如,如果您打开这样的文件:

char filename[] = "file.txt"; FILE *fp = fopen(filename,"r"); // 打开文件名进行读取

// 这里检查文件是否包含关键字 // 如果是这种情况,则显示文件名

printf("%s",filename);

如果您使用的是系统调用"open",一切都会相同,但您将处理文件描述符而不是文件指针。

有关详细信息,请阅读 fopen/open 的手册。

尽管你的问题有点含糊,我想回答如下;

首先,你要在类Unix操作系统的终端上进行这些操作,对吧?因此,i/o 重定向 很可能成为您的朋友。你的标准 C 程序的入口点是这样的:

int main(int argc, char* argv[]) { // ... }

第一个参数,argc表示输入参数的总数(argument count)。 main 函数的第二个参数 argv 表示参数向量(或简单地说,参数数组)并允许您从终端的 stdin 输入参数(重定向到默认情况下是键盘)这意味着,在执行 C 程序时,您可以从外部输入参数,也可以使用 pipes in Unix-like systems, thanks to Douglas McIlroy 发明并坚持将此概念放入正在开发的 Unix 中的人。因此,在您的程序中,您可以通过从键盘输入字符来打印您的参数(技术上称为 option):

int main(int argc, char* argv[])
{
   printf("%s\n", argv[1]);
   return 0;
}

在终端上:

$> ./program filename.txt

filename.txt

其实上面的代码示例只是一个演示。实际上,您不应该以这种方式编写程序。至此,我想给大家介绍一下getopt函数,就是正确解析命令行选项。

现在,根据你的问题,我猜你正试图做这样的事情:

// pseudo-code sample:
main()
{
   get_filename_to_search();
   compare_filename_with_others(); // I suppose, you're reading these names from a file
   if(filename_found == true)
     print(file_name);
   exit();
}

我不会按照上面的逻辑给你写完整的C代码。因为这是你的任务,你需要自己研究并完成。但是,我可以为您提供一些要遵循的提示。您可以通过研究这些函数来连接点,这里是其中的一些函数:getoptfopenfclosefreadstrcmpprintfexit。希望我的post对你有所帮助,祝你好运。