如何解决如何将'\ 0'转换为const void *?
我正在将一些代码迁移到u18,看来poisix写函数更改了签名
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结尾的字符串。它通过检查size参数来工作,并且不会像字符串处理函数那样寻找空终止。
但是,如果您要向文件中写入一个字符-空终止符,则正确的方法是:
write(output,"",1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。