将系统(文件)命令的输出作为字符串存储在C中
Store output of system(file) command as a string in C
要获得文件类型,我们可以执行命令
system("file --mime-type -b filename");
输出显示在终端中。但无法使用命令存储文件类型
char file_type[40] = system("file --mime-type -b filename");
因此,如何使用系统(文件)函数将文件类型存储为字符串。
您可以这样使用popen
:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
FILE *fp;
char file_type[40];
fp = popen("file --mime-type -b filename", "r");
if (fp == NULL) {
printf("Failed to run commandn" );
exit -1;
}
while (fgets(file_type, sizeof(file_type), fp) != NULL) {
printf("%s", file_type);
}
pclose(fp);
return 0;
}
参见system
的手册页:它不返回执行的命令的输出(而是错误代码或命令的返回值)。
你想要的是popen
。它返回一个FILE*
,您可以使用它来读取命令的输出(有关详细信息,请参阅popen
手册页)。
嗯,我想到的实现您想要的目标的第一个也是最简单的方法是将输出重定向到临时文件,然后将其读取到字符缓冲区。
system("file --mime-type -b filename > tmp.txt");
之后,您可以使用fopen
和fscanf
或任何您想要读取文件内容的东西。
当然,在尝试读取临时文件之前,您必须检查system()的返回值。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 将字符串存储到文件下一行的变量中
- 将字符串存储在 constexpr 结构中
- 将字符串存储为十六进制而不进行转换
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 将非数字字符串存储为二进制整数
- 将 C++ 字符串存储到 char* 向量中
- C++无法将对齐的字符串存储在字符串变量中并打印出来
- 短(ASCII,每个字符 7 位)字符串存储和C++中的比较优化
- 我无法将 Excel 中的输入字符串存储为二维字符串
- 如何将此字符串存储为不同的变量
- C 将字符串存储到类中
- C :占用更多内存,将单个字符作为char或字符串存储
- 排序通过字符串C 存储在向量的对象
- 如何将可变长度字符串存储在C/C 中
- 将字符串存储在无符号长整型的向量中
- 如何使用模板解码将来自 YAML::Node 的字符串存储在类中
- 将字符串存储到数组中
- C++-将用逗号分隔的用户输入字符串存储到向量中