c中带有无符号字符的空指针

Posted

技术标签:

【中文标题】c中带有无符号字符的空指针【英文标题】:Null pointer with unsigned char in c 【发布时间】:2016-10-08 12:58:44 【问题描述】:

我正在 c 中构建一个unsigned char *,我想知道我是如何完成它的。所以通常在我记忆的最后,我会输入'\0',但 unsigned char 会将其识别为 0。

所以当我做这样的事情时:

void complement(unsigned char *c, int n)
  while(*c!='\0')
    printf("%d\n", n-(*c));
    c++;
  

当我读到“0”时它会停止(当我读到 0 时我想打印 n,补码)

那么我可以使用什么来为我的 while 设置适当的结束条件?

【问题讨论】:

只需添加 'printf("%d\n",n);'在 while 块之后。 我想读取所有 0 而不仅仅是一个,例如当我读取我的 0 时 c = "00002552552555" 时它会转换为 255。 那么这个字节数据,不是ASCII字符数据?如果它是有效范围为 0 到 255 的字节数据,则必须提供长度。标记结束的数据中不会有任何值。 【参考方案1】:

也许你可以像这样从 while 切换到 do-while?

#include <stdio.h>

void complement(unsigned char *c, int n)

  do
    printf("%d\n", n-(*c));
    printf("The character is %c\n", *c); // Just for debugging...
  while(*(c++)!='\0');


int main()
unsigned char *toPrint = (unsigned char *)"Print me!\0";
complement(toPrint, 0);
return 0;

【讨论】:

我得到了 .pgm 图像,所以我的像素有一些值,我把它们放在我的 unsigned char * 中,所以当我读到“0”时会停止,但我不想停止读 0。 你能展示一下补码的调用和c的初始化吗?

以上是关于c中带有无符号字符的空指针的主要内容,如果未能解决你的问题,请参考以下文章

C# - 避免 LINQ ToDictionary 中的空指针

使用回收器适配器获取空指针

用于字段注入的空指针

第 1034 行:字符 9:运行时错误:引用绑定到类型为“int”的空指针 (stl_vector.h)

C++中关于返回空指针问题

获取表单信息,进行对比时的空指针错误