c - 如何打印char**的内容?
问题描述
我有一个定义为包含字符串的 char** 数组的结构。我不知道如何在其内容上运行 printf。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#ifndef STRUCT_STRING_ARRAY
#define STRUCT_STRING_ARRAY
typedef struct s_string_array
{
int size;
char** array;
} string_array;
#endif
void my_print_words_array(string_array* param_1)
{
int len = param_1->size;
char **d = param_1->array;
for(int i = 0 ; i < len;i++){
printf("%s\n", d[i]);
}
}
int main(){
struct s_string_array *d;
d->size = 2;
char **my_arr = (char *[]){"hello", "world"};//this init is fine
d->array = my_arr;
my_print_words_array(d);
return 0 ;
}
主要功能给了我段错误。怎么了?
解决方案
声明指向结构的指针是没有意义的
struct s_string_array *d;
此外,它未初始化并且具有不确定的值,这进一步是未定义行为的原因。
您要实现的目标如下
#include <stdio.h>
typedef struct s_string_array
{
int size;
char** array;
} string_array;
void my_print_words_array( const string_array *param_1 )
{
for ( int i = 0; i < param_1->size; i++ )
{
puts( param_1->array[i] );
}
}
int main( void )
{
string_array d =
{
.size = 2,
.array = (char *[]){"hello", "world"}
};
my_print_words_array( &d );
return 0 ;
}
程序输出为
hello
world
推荐阅读
- javascript - 未捕获的 ReferenceError:Polymer 3.0 中未定义 require
- google-api - 谷歌课堂邀请接受方法返回一个 NOT-FOUND
- reactjs - ReactJs 中的 AND 运算符
- macos - 在 mac 上创建 tar 文件但排除隐藏文件
- javascript - 为什么应用在 Date 对象上的 toISOString() 会生成错误的时间段,将日期转换为字符串?
- ruby-on-rails - Linkedin Omniauth gem 'omniauth-linkedin-oauth2' 验证失败!invalid_credentials: OAuth2::Error
- java - 为什么 RestTemplate 会消耗过多的内存?
- spring - 是否可以生成请求范围?
- c - 代码需要生成一个随机数,然后继续喷出随机数,直到达到该数字,但它始终相同
- android - 如何监控安卓的流量