如何从c中的字符字符串中获取每个元素?

如何从c中的字符字符串中获取每个元素?,c,string,C,String,我想把buf[20]的前7个元素放到字符A到G中。我希望结果可以是1h,2e,3l,4l,5o,6,7w,但我得到的是1h,2e olWH,3lwh,4le olWH,5olwh,6olwh,7wh。有人能解释一下吗 #include <stdio.h> char buf[20]="Hello World"; char A,B,C,D,E,F,G; int main() { A=buf[0]; B=buf[1];

我想把buf[20]的前7个元素放到字符A到G中。我希望结果可以是
1h,2e,3l,4l,5o,6,7w
,但我得到的是
1h,2e olWH,3lwh,4le olWH,5olwh,6olwh,7wh
。有人能解释一下吗

#include <stdio.h>
     char buf[20]="Hello World";
     char A,B,C,D,E,F,G;
    int main()
    {

        A=buf[0];
        B=buf[1];
        C=buf[2];
        D=buf[3];
        E=buf[4];
        F=buf[5];
        G=buf[6];
        printf("1 %s,2 %s,3 %s,4 %s,5 %s,6 %s,7 %s",&A,&B,&C,&D,&E,&F,&G);
        return 0;
    }
#包括
char buf[20]=“你好,世界”;
字符A、B、C、D、E、F、G;
int main()
{
A=buf[0];
B=buf[1];
C=buf[2];
D=buf[3];
E=buf[4];
F=buf[5];
G=buf[6];
printf(“1%s、2%s、3%s、4%s、5%s、6%s、7%s”、&A、B、C、D、E、F和G);
返回0;
}

使用
%c
A
-
G
而不是
%s
&A
-
&G

%s
是字符串的printf格式,
%c
是字符的printf格式


C字符串是由特殊字符
'\0'
终止的字符序列的内存地址
buf
是一个字符串,但a到G只是一个字符,它们的地址不能被视为字符串。

使用
%c
a
-
G
而不是
%s
&a
-
&G

%s
是字符串的printf格式,
%c
是字符的printf格式


C字符串是由特殊字符
'\0'
终止的字符序列的内存地址
buf
是一个字符串,但a到G各只有一个字符,它们的地址不能被视为字符串。

字符是内存中的一个字节,仅此而已。字符串是以零字节结尾的一系列字节。因此,在字符地址上使用%s打印字符,以及内存中的任何垃圾,直到出现空字节为止(或直到出现内存故障且程序转储内核为止)。您需要%c。字符是内存中的一个字节,仅此而已。字符串是以零字节结尾的一系列字节。因此,在字符地址上使用%s打印字符,以及内存中的任何垃圾,直到出现空字节为止(或直到出现内存故障且程序转储内核为止)。您想要%c。非常感谢!你解决了这个问题,我花了3个小时思考问题出在哪里。非常感谢!你解决了这个问题,我花了3个小时思考问题出在哪里。