gpt4 book ai didi

连接/打印字符串文字

转载 作者:行者123 更新时间:2023-12-02 09:01:40 29 4
gpt4 key购买 nike

我在连接或打印字符串时遇到了一个奇怪的问题。我有一个 char * ,可以将其设置为字符串文字的几个值之一。

char *myStrLiteral = NULL;
...
if(blah)
myStrLiteral = "foo";
else if(blahblah)
myStrLiteral = "bar";

我还有一些从库函数获得的其他字符串,或者是输入的串联 - 它们要么是 malloc 的,要么是堆栈变量。当我尝试打印(或使用 strcpy() 和 strcat() 连接,结果是相同的)时,即使我最后打印字符串文字,它也会打印整个字符串的初始字符。我正在构建或打印。

/* otherString1 contains "hello", otherString2 contains "world" */
printf("%s %s %s\n", otherString1, otherString2, myStrLiteral);

/* prints "barlo world" */

我是否误解了 C 语言中的字符串文字?

最佳答案

检查您收到的文字是否仅包含您期望的字节:

void PrintBytes(const char *s)
{
while (*s) {printf("%d ", *s); s++;}
}

PrintBytes(otherString1);
PrintBytes(otherString2);
PrintBytes(myStrLiteral);

我怀疑其中一个包含嵌入式控制字符。

如果您不关心找出涉及哪个控制字符,您可以简单地打印每个字符串的长度。如果它比应有的长度长,则某处有一个控制字符:

printf("%d\n%s\n", strlen(otherString1), otherString1);

关于连接/打印字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/746312/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com