老牛来学习 发表于 2020-2-26 22:47:50

字符数组输出问题

本帖最后由 老牛来学习 于 2020-2-26 23:01 编辑

#include<stdio.h>

int main()
{
        char a = {'a','b','c'};
        printf("%s",a);
}


上述代码中为什么按%d整型输出可以,也可以输出a,但是不能用%s字符串输出其中一个,比如a【1】?

怎样才能调用其中单独一个字符输出?

ba21 发表于 2020-2-26 23:00:07

因为a是字符不是字符串。
字符数组 a = {'1','2','3'};也不是字符串
字符数组 a = {'1','2','3','\0'}; 这才是用来表示字符串的字符数组

老牛来学习 发表于 2020-2-26 23:02:37

ba21 发表于 2020-2-26 23:00
因为a是字符不是字符串。
字符数组 a = {'1','2','3'};也不是字符串
字符数组 a = {'1','2','3' ...

刚改了一下问题。
那我怎么才能实现调用其中一个字符输出?

magicpower 发表于 2020-2-26 23:07:17

本帖最后由 magicpower 于 2020-2-26 23:08 编辑

你需要%c来输出字符,可以看看c的函数说明,小甲鱼应该有把printf的所有说明符写在那里

老牛来学习 发表于 2020-2-26 23:11:41

magicpower 发表于 2020-2-26 23:07
你需要%c来输出字符,可以看看c的函数说明,小甲鱼应该有把printf的所有说明符写在那里

感谢感谢,刚看蒙了

major_lyu 发表于 2020-2-26 23:12:46

你这是对字符数组和字符串有误解。

char a = {'a','b','c'};定义了一个字符数组。
这个时候变量a是一个地址,表示字符数组的首地址,也可以字符串第0个元素的地址,也可以表示将字符串a;

printf("%c",a);打印字符数组的0个字符元素
要把字符数组按照字符串输出可以用一下两种形式
printf("%s",a);
或者
printf("%s",&a);。
概括的说,以%s打印字符串,后面对应的参数需要是一个字符串的开始地址。
例如
printf("%s",&a); 打印的就是abc;
printf("%s",&a); 打印的就是bc;



#include<stdio.h>

int main()
{
      char a = {'a','b','c'};
      printf("%s",a);
}

老牛来学习 发表于 2020-2-26 23:25:32

major_lyu 发表于 2020-2-26 23:12
你这是对字符数组和字符串有误解。

char a = {'a','b','c'};定义了一个字符数组。


谢谢
页: [1]
查看完整版本: 字符数组输出问题