我正在将一些代码迁移到 u18,并且 poisix write 函数似乎更改了签名
ssize_t write(int fd, const void *buf, size_t nbytes);
调用过去是 write(output, '\0', 1);
但是我会在 u18 上遇到异常 error: invalid conversion from 'char' to 'const void*'
。
初始化空字符数组的正确方法是什么?
最佳答案
初始化 C 字符串字符数组的正确方法是 ""
,它是一个空字符串文字,只包含一个空终止符。 ""
和 '\0'
之间的区别在于前者有一个内存位置 - 它是一个衰减为指针的数组,因此您可以将指针分配给直接它。而'\0'
只是一个字符常量,没有内存位置。
但是,对于 Linux write
,您不需要提供以 null 结尾的字符串。它通过检查大小参数来工作,并且不会像字符串处理函数那样寻找空终止。
但是如果您想将一个字符(空终止符)写入文件,那么正确的方法是:
write(output, "", 1);
关于c - 如何将 '\0' 转换为 const void*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63735559/