【发布时间】:2012-01-22 05:15:34
【问题描述】:
我目前正在为一个学校项目构建一个控制台应用程序,我的应用程序确实需要这个功能。
如何将控制台中的所有文本保存到 C(Windows 平台)中的字符串?
例如:
如果我使用函数system("dir"),它将输出到控制台并列出目录中的所有子目录和文件。我希望它保存在一个字符串中以备后用。
【问题讨论】:
我目前正在为一个学校项目构建一个控制台应用程序,我的应用程序确实需要这个功能。
如何将控制台中的所有文本保存到 C(Windows 平台)中的字符串?
例如:
如果我使用函数system("dir"),它将输出到控制台并列出目录中的所有子目录和文件。我希望它保存在一个字符串中以备后用。
【问题讨论】:
您可以使用popen() 而不是system():
#include <stdio.h>
#include <limits.h>
int main()
{
FILE *fp;
char path[PATH_MAX];
fp = popen("DIR", "r");
if (fp == NULL)
{
/* Handle error */
}
while (fgets(path, PATH_MAX, fp) != NULL)
{
printf("%s", path);
}
pclose(fp);
return 0;
}
【讨论】:
使用 popen() 函数:
http://pubs.opengroup.org/onlinepubs/009604499/functions/popen.html
popen() 函数应执行字符串命令指定的命令。它应在调用程序和执行的命令之间创建一个管道,并应返回一个指向可用于读取或写入管道的流的指针。
#包括 ...
FILE *fp;
int status;
char path[PATH_MAX];
fp = popen("ls *", "r");
if (fp == NULL)
/* Handle error */;
while (fgets(path, PATH_MAX, fp) != NULL
printf("%s", path);
这适用于 Linux。所以我认为它也可能适用于Windows。
【讨论】: