我需要byte
在应用程序中编辑每个,我需要将它存储在某个地方。首先我使用char*
or unsigned char*
,但是当我读取一个包含零的更复杂的文件时,整个事情不再起作用(零等于'\0'
又名字符串结尾)。我应该改用什么?
user1502256
问问题
370 次
2 回答
4
unsigned char *
是正确的数据类型,您只需将拥有的字节数存储在单独的变量中。
永远记住你处理的是字节,而不是字符串/字符——所以你不能使用任何字符串函数,因为它们期望终止的字符串。
- 如果您想要长度,请使用包含它的变量
- 如果要比较字节,请使用
memcmp
而不是strcmp
于 2012-10-27T14:50:19.427 回答
3
如果要加载内部为零的文件(二进制文件),只需在文件上使用 stat() 来获取文件的大小并通过循环将其写入数组,直到索引器具有与大小相同的值文件减 1 或使用此方法:
struct stat fistat;
//get the size of the file
if(stat("filename",&fistat)<0) {
printf("file not found\n");
return 1;
}
// open the file
FILE* file = fopen("filename","r");
if (!file){
printf("can't open file\n");
return 1;
}
unsigned char buff[fistat.st_size];
// write the file to buffer
fread(buff,fistat.st_size,1,file);
fclose(file);
这样你就有你的文件在buff
其中有大小fistat.st_size
。
于 2012-10-27T14:59:10.130 回答