【发布时间】:2016-03-09 01:18:15
【问题描述】:
我已经从一个文件中读取并存储为十六进制值(比如第一个值是D4 C3)。然后将其存储到 char 数据类型的缓冲区中。但是每当我打印缓冲区时,我都会得到一个像buff[0]=ffffffD4 这样的值; buff[1]=ffffffC3 等等。
如何在不添加任何字节的情况下将实际值存储到缓冲区?
将 sn-p 与此一起附加
ic= (char *)malloc(1);
temp = ic;
int i=0;
char buff[1000];
while ((c = fgetc(pFile)) != EOF)
{
printf("%x",c);
ic++;
buff[i]=c;
i++;
}
printf("\n\nNo. of bytes written: %d", i);
ic = temp;
int k;
printf("\nBuffer value is : ");
for(k=0;k<i;k++)
{
printf("%x",buff[k]);
}
【问题讨论】:
-
我看到两个潜在的(但不相关的)问题:首先是 C 中的 don't cast the return of
malloc(and friends)(或任何返回void *的函数)。其次,变量 c 和 int 还是 char?请记住fgetc返回一个int。还有很多变量你在任何地方都没有真正使用,比如ic,你从来没有真正用它做任何事情吗? -
那么您的代码将无法按预期工作,因为
(char) EOF != (int) EOF -
非常感谢您抽出宝贵的时间。现在已经解决了。问题在于错误的数据类型声明