有人请解释一下c中的字符串吗?

use*_*778 2 c string

如何在没有连接的情况下一个接一个地存储两个字符串(我们可以增加地址)

char str[10];
scanf("%s",str);
str=str+9;
scanf("%s",str);
Run Code Online (Sandbox Code Playgroud)

注意:如果我将第一个字符串作为BALA而第二个字符串作为HI,它应该在BALA之后打印为HI.但HI不应该取代BALA.

unw*_*ind 8

你不能增加(或以任何其他方式改变)这样的数组,数组variable(str)是一个无法改变的常量.

你可以这样做:

char str[64];

scanf("%s", str);
scanf("%s", str + strlen(str));
Run Code Online (Sandbox Code Playgroud)

这将首先扫描str,然后立即再次扫描'\0',在第一个字符串终止的顶部开始新的字符串.

如果您"BALA"先输入,则开头str将如下所示:

     +---+---+---+---+----+
str: | B | A | L | A | \0 |
     +---+---+---+---+----+
Run Code Online (Sandbox Code Playgroud)

因为strlen("BALA")是4,所以下一个字符串将从上面'\0'可见的顶部开始扫描到缓冲区.如果你再输入"HI",str将会这样开始:

     +---+---+---+---+---+---+----+
str: | B | A | L | A | H | I | \0 |
     +---+---+---+---+---+---+----+
Run Code Online (Sandbox Code Playgroud)

此时,如果您打印str它将打印为"BALAHI".

当然,这是非常危险的,可能会引入缓冲区溢出,但这就是你想要的.