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 中的空指针