c-使用strcat为char**元素添加空格



我得到了这样的数组:

char *family[3] ={"son", "father", "sister"};

我想通过使用函数strcat(son," ");将每个元素的长度对齐到相同的大小,但我得到了转储的核心。

不能将D_2 strcat()转换为文字。后者就是三根"弦"。

文字被放在只读存储器中。它们可能不会被覆盖,尝试这样做会导致运行时错误。

strcat()将源字符串的副本附加到目标字符串的末尾,包括终止的ASCII NUL字节。要附加的字符串的初始字符将覆盖目标字符串末尾的NUL字节。

因此,您不能将"son"设置为目标字符串,因为它是一个文字字符串,

`strcat(家族[0],");是您想要做的,但这也不会起作用,因为family[0]已经设置为"son\0\0\0",并且会导致缓冲区溢出。

改为:

char *family[3] ={"son   ", "father", "sister"};//now family[0] is initialized with spaces to match length
                                                //(and strcat() statment is not needed)

我想你正试图写这样的东西:

char family[3][MAX_LEN] = {"son", "father", "sister"};
strcat (family[i], "   ");

关于"家庭"定义与原文的差异:

 char *family[3] ={"son", "father", "sister"};

这里有3个指针指向3个只读的常量字符串。因此,您无法使用strcat修改它们。

而在char s[3][L]={"a","b","c"}上,您在堆栈中分配3个长度为L的char数组,并将它们初始化为3个文字。所以现在你可以用strcat修改它们,如果L足够大。。。

此外,正如@alk所指出的,您使用strcat()的方式是错误的。。。

最新更新