【问题标题】:Reading in the output of a program, saving it as a string, and using that string in the original program读入程序的输出,将其保存为字符串,并在原始程序中使用该字符串
【发布时间】:2016-11-11 18:04:49
【问题描述】:

我正在尝试从一组 MP3 文件中获取特定信息,目前我在主 cygwin64 中,其中包含 MP3 文件和一个仅包含的 .C 文件

FILE * fp;

它包含那一行代码,因为当该行代码到位并且我在 cygwin 命令行中键入并运行“thing.c”时,它会输出似乎是文件夹内容的信息。例如它输出,

home:                                                      sticky, directory
lib:                                                       directory
sbin:                                                      directory
setup-x86_64.exe:                                          PE32+ executable       (GUI) x86-64 (stripped to external PDB), for MS Windows
song.mp3:                                                  Audio file with     ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz,     JntStereo
song1.mp3:                                                 Audio file with   ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz,   JntStereo
thing.c:                                                   ASCII text, with CRLF line terminators
thing.txt:                                                 empty

我想要做的是能够将该输出提取到一个字符串中,然后我可以在我的 C 文件中使用该字符串并进行更改,然后重新打印出新的更改信息。但是,我不确定输出的真正来源或我如何能够获取它或将输出保存为 .txt 文件或返回到 C 文件中。 任何建议表示赞赏谢谢!

【问题讨论】:

  • 这个问题没什么意义。为了让 thing.c 做任何有意义的事情,它需要有不止一行、一个 main 函数和一种将文件编译成可执行文件的方法。

标签: c string file-io cygwin


【解决方案1】:

这个文件根本不是一个真正的 C 文件。因为您在 Cygwin 中,所以您可能在不区分大小写的文件系统 (NTFS) 上运行。因此,当您运行 .c 文件时,Cygwin 的 file 命令正在运行。您尝试声明变量的方式(显然)恰好是在执行“file * fp”命令。我敢肯定,在你的输出的其余部分之后,你会得到fp: Cannot open "fp" 或类似的东西。

这根本与 C 无关,只是被您的 shell 解释为脚本。

如果你想用 C 语言来做这件事,听起来你有很多东西要学。更有可能的是,你可以编写一个 shell 脚本来完成你想要的。虽然我从未使用过它,但 mp3info (https://github.com/jaalto/cygwin-package--mp3info) 用于从 MP3 文件中提取标签信息。您可能会从中获得所需的确切信息,或者将输出通过管道传输到 sedawk 或许多其他工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多