在unsigned char *上使用字符串方法而不进行强制转换

时间:2014-04-11 11:17:26

标签: c

我注意到我使用了几种字符串方法,比如

strcpy(userAmount, pch);

unsigned char*缓冲区上,没有投射。例如,这些变量定义为

   u8 * pch = NULL;
   u8 userAmount[255] = {0};

到目前为止一切正常。

这是预期的行为吗?我应该继续这样使用吗?

到目前为止缓存存储的ASCII文本,将来可能会保存UTF8 - 在这种情况下情况会有所不同(例如,在转换,缓冲区类型方面)吗?

1 个答案:

答案 0 :(得分:0)

为什么在标准类型(u8)会使用某些非标准类型(char?)?

但是,你的方法应该没问题。

来自C11-Standard(我的斜体):

  

7.24.1字符串函数约定

     

头文件string.h声明了一个类型和几个函数,并定义了一个   宏用于操作字符类型的数组和其他被视为数组的对象   字符类型

     

[...]

     

对于本子条款中的所有函数,每个字符都应被解释为具有类型   unsigned char (因此每个可能的对象表示都是有效的,并且有一个   不同的价值)。