读取程序的输出,将其保存为字符串,并在原始程序中使用该字符串

时间:2016-11-11 18:04:50

标签: c string file-io cygwin

我正在尝试从一组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文件中。 任何建议表示赞赏谢谢!

1 个答案:

答案 0 :(得分:0)

这个文件根本就不是C文件。因为您在Cygwin中,您很可能在不区分大小写的文件系统(NTFS)上运行。因此,当您运行file文件时,Cygwin的.c命令正在运行。您尝试声明变量(显然)的方式恰好是做了一个'文件* fp'命令。我确定您在输出的其余部分之后获得fp: Cannot open "fp"或类似内容。

这根本不是C相关的东西,只是被shell解释为脚本。

如果您想在C中执行此操作,您可能需要学习很多东西。更有可能的是,您可以编写一个shell脚本来完成您想要的任务。虽然我从未使用它,但mp3infohttps://github.com/jaalto/cygwin-package--mp3info)用于从MP3文件中提取标记信息。您可以从中获取所需的确切信息,或将输出通过管道传输到sedawk或其他一些工具。