学编程的盆子 发表于 2021-2-28 13:01:51

求助一个%c和%s的问题

#include<stdio.h>
int main()
{
    char *color = {"A","B","C","D","E"};//不是一整个字符串
    char **p; // p = &color; color = &每个元素
    for (int i = 0; i < 5; i++)
    {
      p = color + i;
      printf("%s\t",*p);
    }
    return 0;
   
}

#include<stdio.h>
int main()
{
    char *color = {"A","B","C","D","E"};//不是一整个字符串
   
    for (int i = 0; i < 5; i++)
    {
      printf("%c\t",*color);
    }
    return 0;
   
}


想问问这里的第一个程序,用 %s 才能输出而用 %c 不行。

而第二个程序用吗 %c 可以而用 %s 不行,这是为啥呢?

wp231957 发表于 2021-2-28 13:07:21

c语言中双引号界限的都是字符串,要用%s来显示
和是否一个字符没关系

学编程的盆子 发表于 2021-2-28 13:25:21

wp231957 发表于 2021-2-28 13:07
c语言中双引号界限的都是字符串,要用%s来显示
和是否一个字符没关系

为啥 第二个程序用吗 %c 可以而用 %s 不行

学编程的盆子 发表于 2021-2-28 13:27:20

学编程的盆子 发表于 2021-2-28 13:25
为啥 第二个程序用吗 %c 可以而用 %s 不行

我似乎知道了 ,跟 Printf中的 地址有关

如果前面是%s,那对于的就是地址

如果是%c,对应的是值

学编程的盆子 发表于 2021-2-28 13:30:38

#include<stdio.h>
int main()
{
    char color = {"A","B","C","D","E"};
    char *p;
    p = color;

    printf("%s",p);
   
    return 0;
}

为啥我这样写会报错呢

难道只有char color[] = "    "

这种一个双引号的形式才可以这样执行吗

wp231957 发表于 2021-2-28 13:35:29

学编程的盆子 发表于 2021-2-28 13:30
#include
int main()
{


不是说了吗
双引号界限字符串
单引号界限字符
你前面定义的是字符数组,后面一定要用单引号
后面你用双引号,前面就要定义字符串数组

学编程的盆子 发表于 2021-3-1 21:41:57

wp231957 发表于 2021-2-28 13:35
不是说了吗
双引号界限字符串
单引号界限字符



#include<stdio.h>
int main()
{
    char color = {"A","B","C","D","E"};
    char *p;
    p = color;

    printf("%s",p);
   
    return 0;
}

为啥我这样写会报错呢

难道只有char color[] = "    "

这种一个双引号的形式才可以这样执行吗

wp231957 发表于 2021-3-1 22:10:56

学编程的盆子 发表于 2021-3-1 21:41
#include
int main()
{


我六楼说的不够清晰吗
char color = {"A","B","C","D","E"};你这个前面定义的是字符数组,后面花括号里给出的是字符串数组,要是能通过就怪了

crisfo 发表于 2021-3-2 10:41:36

‘A’和 "A" 这两个的含义是不一样的

Sunr 发表于 2021-3-5 16:38:41

"A"就等于'A\0'
页: [1]
查看完整版本: 求助一个%c和%s的问题