gpt4 book ai didi

c - 将空终止符视为 C 中的常规字符

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:31 24 4
gpt4 key购买 nike

我想将一个char[]中的所有字符复制到另一个char[]中。但是,假设有一个 '\0',那么我想将其视为普通字符——如果您愿意,可以将其视为文字。因此,当我用格式说明符 %s 打印出 char[] 时,它不应该在中间停止。例如

// chars copied to array x
char x[] = {'h','e','\0','l','l','o','\0'}

printf("%s\n",x); // prints 'he\0llo'

有没有办法做到这一点?

最佳答案

如果您知道需要复制多少个字符,请使用memcpy。如果 x 是您示例中的真实数组,则 sizeof(x) 将为您提供该数量,但如果您将 x 作为参数传递对于一个函数,sizeof 不会在该函数内部工作(它只会显示指针的大小),所以基本规则是您的字符串应该以 NUL 结尾,或者您应该保留它们的大小在一个单独的变量中。

对于打印,您可以按照@alk 的建议在for 循环中打印,或者使用fwrite 将任何缓冲区(可能带有NUL)写入stdout :

fwrite(x, sizeof(x), 1, stdout); /* sizeof will work only for a real array */

关于c - 将空终止符视为 C 中的常规字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961675/

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