C语言 使用标量变量或指针打印二维数组



如何使用标量变量或指针打印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

您可以看到,您的问题可以通过简单地避免在echo中使用新行字符来解决。通过对echo (man echo)使用man命令,我们可以看到

-n不输出尾随的换行符

我们可以通过替换

system("echo $myvar"); 

system("echo -n $myvar"); 

使用-ne

system("echo -ne $myvar"); 

将光标放在包含Hello的行首

我找到了确切的解决方案。然而,我仍然没有使用指针/标量变量。

char myarray[2][10] = {"Hello", "World"};
for (j=0;j<2;j++){    
setenv ("myvar", myarray[j]);
system("echo -n $myvar' '");      
}

如何使用标量变量或指针打印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打印

还有一种更简单的方法:

#include <stdio.h> /* for printf() */
...
for (j = 0; j < 2; j++) {
  char p = myarray[j];
  printf("%s", p);
}

最新更新