C 如何打印字符串数组的内容?
我已使用以下字符串创建并初始化了一个数组:C 如何打印字符串数组的内容?,c,arrays,string,pointers,C,Arrays,String,Pointers,我已使用以下字符串创建并初始化了一个数组: char print_names[][10] = {"\t\t1. John\n", "\t\t2. Smith\n", "\t\t3. Jane\n", "\t\t4. Mary\n", "\t\t5. Lisa\n"}; 据我所知,数组的名称
char print_names[][10] = {"\t\t1. John\n",
"\t\t2. Smith\n",
"\t\t3. Jane\n",
"\t\t4. Mary\n",
"\t\t5. Lisa\n"};
据我所知,数组的名称本身就是一个指针。因此,当我把这些行:
printf("%c", *print_names[0]);
printf("%c", *print_names[1]);
它应该指向该数组元素的内容。但控制台上没有打印任何内容
我进入了调试器,它清楚地显示每个元素都包含适当的字符串。我不确定我哪里做错了
编辑:我还在学习数组和指针的基本知识,所以我没有在文件中包含
附加问题:是否可以不使用字符串打印内容(名称)
嗯。我想出来了。我想我现在明白了。谢谢回答。
*打印姓名[0]
等于打印姓名[0][0]
。它是print\u names
中第一个字符串的第一个字符
由于print\u names
数组中每个字符串的第一个字符都是一个选项卡('\t'
),因此您可以打印这个实际上不可见的选项卡
如果要打印字符串本身,需要使用%s
作为格式,并传递指向第一个字符的指针。这可以通过以下方式实现:
printf("%s", print_names[0]);
另一方面,如果要打印选项卡并使其可见,请使用其他字符环绕输出。像
printf("tab = \"%c\"\n", print_names[0][0]);
它将打印由双引号包围的选项卡。
*打印名称[0]
等于打印名称[0][0]
。它是print\u names
中第一个字符串的第一个字符
由于print\u names
数组中每个字符串的第一个字符都是一个选项卡('\t'
),因此您可以打印这个实际上不可见的选项卡
如果要打印字符串本身,需要使用%s
作为格式,并传递指向第一个字符的指针。这可以通过以下方式实现:
printf("%s", print_names[0]);
另一方面,如果要打印选项卡并使其可见,请使用其他字符环绕输出。像
printf("tab = \"%c\"\n", print_names[0][0]);
它将打印由双引号包围的选项卡。数组
print\u name
有两个维度:
- 元素的数量由初始值设定项确定:在您的示例中为5
- 数组中每个元素的
元素数定义为char
10
printf()
以以下方式打印数组元素:
#包括
无效打印_数组(){
char print_name[][12]={
“\t\t1.John\n”,
“\t\t2.Smith\n”,
“\t\t3.Jane\n”,
“\t\t4.Mary\n”,
“\t\t5.Lisa\n”
};
size\u t count=sizeof(打印名称)/sizeof(打印名称[0]);
对于(大小i=0;i
关于你的方法:
据我所知,数组的名称本身就是一个指针
不完全是这样:数组的名称就是这样。在表达式中使用数组名而不是sizeof(n)
时,它会衰减为指向数组第一个元素的指针
下面的行输出第一个和第二个字符串的第一个字节:
printf("%c", *print_names[0]); // same as print_names[0][0]
printf("%c", *print_names[1]); // same as print_names[1][0]
数组
print\u names
有两个维度:
- 元素的数量由初始值设定项确定:在您的示例中为5
- 数组中每个元素的
元素数定义为char
10
printf()
以以下方式打印数组元素:
#包括
无效打印_数组(){
char print_name[][12]={
“\t\t1.John\n”,
“\t\t2.Smith\n”,
“\t\t3.Jane\n”,
“\t\t4.Mary\n”,
“\t\t5.Lisa\n”
};
size\u t count=sizeof(打印名称)/sizeof(打印名称[0]);
对于(大小i=0;i
关于你的方法:
据我所知,数组的名称本身就是一个指针
不完全是这样:数组的名称就是这样。在表达式中使用数组名而不是sizeof(n)
时,它会衰减为指向数组第一个元素的指针
下面的行输出第一个和第二个字符串的第一个字节:
printf("%c", *print_names[0]); // same as print_names[0][0]
printf("%c", *print_names[1]); // same as print_names[1][0]
由于数组尺寸过大(有10个条目,但只填充了5个,其他条目则填充了
NULL
指针),因此可以使用以下方式打印数组内容(每行一个字符串):
这相当于此代码:
int i;
for (i = 0; print_names[i]; i++)
printf("%s", print_names[i]);
如果您知道数组中有5个元素:
int i;
for (i = 0; i < 5; i++)
printf("%s", print_names[i]);
inti;
对于(i=0;i<5;i++)
printf(“%s”,print_名称[i]);
由于数组尺寸过大(有10个条目,但只填充了5个,其他条目则填充了NULL
指针),因此可以使用以下方式打印数组内容(每行一个字符串):
这相当于此代码:
int i;
for (i = 0; print_names[i]; i++)
printf("%s", print_names[i]);
如果您知道数组中有5个元素:
int i;
for (i = 0; i < 5; i++)
printf("%s", print_names[i]);
inti;
对于(i=0;i<5;i++)
printf(“%s”,print_名称[i]);
它可以工作,但是因为每行的第一个元素是\t,所以您将看不到任何您也可以使用的东西
printf(“%s”,打印名称[0])
要打印:\t\t1。约翰\n这一排
请注意,在数组的第二维度中放置了10个以上的字符 它可以工作,但是因为每行的第一个元素是\t,所以您将看不到任何您也可以使用的东西
printf(“%s”,打印名称[0])
对p