使用系统ECHO命令以C语言打印2D数组

时间:2016-10-07 04:28:15

标签: c echo

如何在C程序中执行系统命令“echo”以打印出2D数组中的所有元素?我试过了,但它没有用。

输入:

char myarray[1][10] = {"Hello", "World"};
system("echo $myarray");

预期产出:

Hello World

目前我没有得到任何输出。

更新1(约束): 我无法分配更多内存 - 我只能使用myarray变量。 我可以使用任何其他标量或指针变量。

3 个答案:

答案 0 :(得分:1)

在调用system之前,您需要在单个字符串中构建整个命令。类似的东西:

char myarray[2][10] = {"Hello", "World"};
//           ^ notice

char mycommand[42];
strcpy(mycommand, "echo \"");
strcat(mycommand, myarray[0]);
strcat(mycommand, " ");
strcat(mycommand, myarray[1]);
strcat(mycommand, "\"");

system(mycommand);

答案 1 :(得分:1)

我假设这是在Linux机器上,而不是Windows!

系统命令echo将您要打印的参数作为参数。所以你认为

echo $myArray

会打印出来

$myArray

但它没有。 $表示"在环境变量列表中查找以下字符串并打印该"。并且myArray未在您的环境变量列表中定义,因此它不会打印出任何内容。它肯定不会在您的计算机程序中打印出变量!

如果您将呼叫更改为

system("echo $path");

你会得到一个长字符串打印出来,列出了许多目录。这是您当前的path

但这些都不能解决你的问题。您要做的是使用Hello World命令打印echo。这意味着您需要(有效地)使用以下参数调用system()函数:

system("echo Hello world");

你能做到的唯一方法就是"构建"您希望它打印出来的字符串,然后告诉system()完整的字符串。

所以你需要以下内容:

#define NUMSTRINGS 2  // Note that there are 2 strings!

char myArray[NUMSTRINGS][10] = {"Hello", "world"};
char command[256] = "echo"; // Start command

int i;
for (i=0; i<NUMSTRINGS; ++i) {
    strcat(command, " ");        // Space separator
    strcat(command, myArray[i]); // Next string
} // for
system(command);

答案 2 :(得分:0)

这不起作用,因为myarray是C中的变量,$myarray是shell中的环境变量。他们彼此没有关系 - 正如“阅读,英格兰”和“阅读新闻”没有任何关系。

如果要将变量传递给shell,可以尝试setenv()