如何使用标量变量或指针打印2D字符串数组?程序需要执行系统命令“echo”来打印出所有字符串
输入:
char myarray[2][10] = {"Hello", "World"};
for (j=0;j<2;j++){
setenv ("myvar", myarray[j]);
system("echo $myvar");
}
实际输出:
Hello
World
预期产出:
Hello World
答案 0 :(得分:3)
您可以通过简单地避免回显中的新行字符来解决您的问题。通过在man
(echo
)上使用man echo
命令,我们可以看到
-n不输出尾随换行符
所以我们可以通过替换
来做到这一点system("echo $myvar");
通过
system("echo -n $myvar");
答案 1 :(得分:0)
使用-ne
system("echo -ne $myvar");
将光标留在包含Hello
的行的开头。
答案 2 :(得分:0)
我找到了确切的解决方案。但是我仍然没有使用指针/标量变量。
char myarray[2][10] = {"Hello", "World"};
for (j=0;j<2;j++){
setenv ("myvar", myarray[j]);
system("echo -n $myvar' '");
}
答案 3 :(得分:0)
如何使用标量变量或指针来打印2D字符串数组
在特定条件下的数组衰减为指向其第一个元素的指针。其中一种情况是它们被分配(到右指针变量)。
char myarray[2][10] = {"Hello", "World"};
是一个char
数组的数组。因此myarray[0]
是char[10]
的数组。 char[10]
的第一个元素是char
。
你可以做到
char * p = myarray[0];
然后p
指向myarray[0]
的第一个元素。它指向myarray[0][0]
。 p
获取myarray[0][0]
分配的地址。
在此之后,您可以像这样修改您的代码:
for (j = 0; j < 2; j++) {
char p = myarray[j];
setenv ("myvar", p);
system("echo $myvar");
}
代码使用p
进行打印。
还有更简单的方法用C打印:
#include <stdio.h> /* for printf() */
...
for (j = 0; j < 2; j++) {
char p = myarray[j];
printf("%s", p);
}