Переместить проверку в другую функцию. И проверить это самостоятельно. Или подделайте пользовательский рефакторинг остатка, чтобы получить указатель на функцию, которая вызывается обратно для сбора некоторых букв. Это должно включить простую подделку.
Я давно не писал C, но что-то вроде этого также может работать
/* test this independentaly */
int isvalid(char* chars){
/* do stuff and return result */
}
/*real function */
char* getinput() {
scanf(....)
return stuff_from_scanf;
}
/*fake/mock function */
char* getinputFake(char * testString) {
return testString;
}
test() {
int result = isvalue(getinputFake("test data"));
/* rest of test */
}
Вам не нужно проверять функцию scanf, но вы можете заменить ее на fscanf и передать в поток символы, подобные этой
STDIN
char* getinput(FILE * stream) {
fscanf(stream....)
return stuff_from_fscanf;
}
test() {
FILE * stream = .....; /*create a dummy stream say from */
int result = isvalue(getinput(stream);
/* rest of test */
}