#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef uint8_t BYTE;
int main(int argc, char *argv[])
{
char *block = malloc(BYTE * 512);
FILE *file = fopen(argv[1], "r");
fclose(argv[1]);
}
我不知道我做错了什么,我还没有开始编写任何实际代码,我是 C 中的指针的新手。我什至没有做任何事情就已经出现错误,我非常对不起。
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow recover.c -lcrypt -lcs50 -lm -o recover
recover.c:9:26: error: unexpected type name 'BYTE': expected expression
char *block = malloc(BYTE * 512);
^
recover.c:12:12: error: incompatible pointer types passing 'char *' to parameter of type 'FILE *' (aka 'struct _IO_FILE *') [-Werror,-Wincompatible-pointer-types]
fclose(argv[1]);
^~~~~~~
/usr/include/stdio.h:213:26: note: passing argument to parameter '__stream' here
extern int fclose (FILE *__stream);
^
2 errors generated.
make: *** [<builtin>: recover] Error 1
答案 0 :(得分:0)
代替类型,使用类型的大小
//char *block = malloc(BYTE * 512);
char *block = malloc(sizeof(BYTE) * 512);
更好的是,根本不要使用类型。
char *block = malloc(sizeof *block * 512);
答案 1 :(得分:0)
对于 fclose
,您应该传递一个 FILE *
作为参数,对于您的情况,它将是 fclose(file);