C语言中使用的命令行指针char *argv[]允许进行如下操作;
ptintf ("%c", argv [3][6]); // to print the 7th element of 4th argument
printf ("%s", argv [3]); // to print the 4th parsed argument
现在我明白了 argv char 数组是在调用 main 函数之前创建的,它 char *argv [] 只是一个指向编译器创建的数组的指针。
我们如何在 C 代码中创建一个允许类似操作的指针?
我尝试过,
#include <stdio.h>
int main() {
char array [20] [20];
char *ptr_array = array ;
array [0] [0]= 'a';
array [0][1]= 'b';
array [0] [2] = '\0';
array [1] [0]= 'a';
array [1][1]= 'b';
array [1] [2] = '\0';
array [2] [0]= 'a';
array [2][1]= 'b';
array [2] [2] = '\0';
// assuming there is content in the array
printf("%s\n", ptr_array [1]);
return 0; }
但我最终在编译时收到警告,并在执行时收到核心转储。
最佳答案
你想要的是一个指针数组。所以ptr_array
的声明应该是
char *ptr_array[20]; // an array of 20 pointer-to-char
以下代码使用 strcpy
填充 array
中的两个字符串。 {{0}}
确保所有其他字符串均为零。然后声明 ptr_array
并初始化所有 20 个指针。最后打印出其中一个字符串。
int main( void )
{
char array[20][20] = {{0}};
strcpy( array[0], "hello" );
strcpy( array[1], "world" );
char *ptr_array[20];
for ( int i = 0; i < 20; i++ )
ptr_array[i] = array[i];
printf( "%s\n", ptr_array[0] );
return 0;
}
关于c - 如何创建类似 char *argv 的 char 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392047/