Я пытаюсь вставить функцию fscanf
, которая изначально читает из stdin
как fscanf(stdin,"%ms", &secret)
.В моей вставленной функции я пытаюсь заставить ее читать из входного файла, который я создал с символьной строкой.Вот что я делаю:
int fscanf(FILE *stream, const char *format, ...){
FILE * in ;
char * buffer = "secretString";
size_t length = strlen(buffer);
in = fmemopen(buffer, length, "r");
if (in== NULL){
handle_error("fmemopen");}
// This is the part where I'm trying to feed my file as stdin
// since original fscanf expects stdin which I'm trying to hack
int dptr = fileno(in);
dup2(dptr, 0);
va_list args;
va_start(args, format);
int p = vfscanf(in, format, args);
va_end(ap);
fclose(in);
return p;
}
Однако я получаю Bad file descriptor
ошибку.Буду признателен, если кто-нибудь скажет мне, что я делаю не так.