-1

我需要byte在应用程序中编辑每个,我需要将它存储在某个地方。首先我使用char*or unsigned char*,但是当我读取一个包含零的更复杂的文件时,整个事情不再起作用(零等于'\0'又名字符串结尾)。我应该改用什么?

4

2 回答 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 回答