所以我正在逐字节地读取.img
文件,如下所示:
void print_img_section(FILE * f, int start, long int size, char * target_file_name)
{
unsigned char list[size];
fseek(f, start, 0);
if (fread(list, 1, size, f) <= 0) {
fprintf(stderr, "problems reading directory from image\n");
exit(1);
}
}
我想以某种方式将target_file_name
与list
进行比较,看看它们是否匹配。但是,list是十六进制值的数组,即{AB,1E,16},所以我想知道有一种方法可以将list
转换为char数组,以便比较两者(或者如果有其他任何方式你可以看到做这个任务)。
非常感谢您的帮助!
编辑:
解决方案感谢:Iharob Al Asimi
void print_file_name(FILE * f, int start, long int size)
{
unsigned char list[size+1];
char * test = "alphabet_short.txt";
fseek(f, start, 0);
if (fread(list, 1, size, f) <= 0) {
fprintf(stderr, "problems reading directory from image\n");
exit(1);
}
else {
list[size+1] = '\0';
if (strcmp(list, test) == 0) {
fprintf(stdout, "they match!\n");
}
}
}
答案 0 :(得分:0)
是的,fread()
将void *
作为第一个参数,因此您只需将list
声明为char list[size];
,然后使用strcmp()
。
但要这样做,您需要'\0'
终止list
,就像这样
void
print_img_section(FILE *f, int start, long int size, char *target_file_name)
{
unsigned char list[size + 1];
size_t readsize;
fseek(f, start, 0);
if ((readsize = fread(list, 1, size, f)) <= 0) {
fprintf(stderr, "problems reading directory from image\n");
exit(1);
} else {
list[readsize] = '\0';
if (strcmp(list, target_file_name) == 0) {
fprintf(stdout, "they match!\n");
}
}
}
不要忘记#include <string.h>
。