如何在没有连接的情况下一个接一个地存储两个字符串(我们可以增加地址)
char str[10];
scanf("%s",str);
str=str+9;
scanf("%s",str);
Run Code Online (Sandbox Code Playgroud)
注意:如果我将第一个字符串作为BALA而第二个字符串作为HI,它应该在BALA之后打印为HI.但HI不应该取代BALA.
你不能增加(或以任何其他方式改变)这样的数组,数组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".
当然,这是非常危险的,可能会引入缓冲区溢出,但这就是你想要的.