传递给函数时,C类型从char*转换为int

Mag*_*gna 0 c

我正在尝试将文件名传递给线程函数,但它的类型在函数内转换为int

struct Data {
    char file_name;
}
void *Requestor(void *args) {
    struct Data *data = (struct Data*)args;
    printf("%s\n", data->file_name); //says expected char* but argument is type of int
}

int file_count = 5;
struct Data files[file_count];

for (int i = 0; i < file_count; i++) {
    printf("%s\n", argv[5 + i]); //this prints the file_name correctly;
    files[i].file_name = argv[5 + i]; // I get: warning: assignment makes integer from pointer without a cast [-Wint-conversion when compiling
    int thread = pthread_create(&(requesterThreads[i]), NULL, Requestor, &files[i]);
}
Run Code Online (Sandbox Code Playgroud)

And*_*Sun 5

你错过了一个*:char file_name;应该是char *file_name;编译器警告你它是一个int而不是一个在varargs charchar被隐式提升的原因int.