gpt4 book ai didi

c - 将命令执行的输出存储到数组

转载 作者:行者123 更新时间:2023-11-30 18:53:01 24 4
gpt4 key购买 nike

我有一个数组 char buffer[300],我想在其中存储执行 system("ls") 的输出。我该怎么做呢?更具体地说,我希望它与我的伪代码类似:

int main(void) {
char buffer[300];
//store output to buffer
system("ls");

//after storing output from system("ls") print buffer to terminal
//printf(buffer);
}

最佳答案

你不能用system()来做到这一点。您可以使用popen()来做到这一点如果您的系统支持。

类似于您的伪代码的示例(效率不高):

#include <stdio.h>

void runCommand(char* cmd, char* buffer, int size);

int main() {
char buffer[300];
runCommand("ls", buffer, 300);
printf("%s\n", buffer);
return 0;
}

void runCommand(char* cmd, char* buffer, int size) {
int c, i=0;
FILE* stream = popen(cmd, "r");
while ((c = fgetc(stream)) != EOF && i < size-1)
buffer[i++] = c;
buffer[i] = 0; // null terminate string
pclose(stream);
}

更简单的示例 - 逐行打印命令输出:

#include <stdio.h>

void main() {
char buffer[300];
FILE* stream = popen("ls", "r");
while (fgets(buffer, 300, stream) != NULL)
printf("%s", buffer);
pclose(stream);
}

关于c - 将命令执行的输出存储到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com