尝试编写 fgets 函数的一个新版本 tfgets——tfgets 函数的输入与 fgets 函数一致,写出完整代码来实现以下内容(1) tfgets 函数可设定一个超时时限,比如 10 秒,即用户如果不在 10 秒内键入一个正确的输入行,则 tfgets 返回一个警告提示信息; 否则 tfgets 返回一个指针,该指针指向用户键入的输入行; (2) 用户键入的信息需要与预设信息一致,即视为正确输入,可以 给出相关提示,让用户猜测应该输入什么(不得直接给出答案) #include <stdio
时间: 2024-03-01 13:49:16 浏览: 137
fgets函数与fputs函数
.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
char *tfgets(char *s, int size, FILE *stream, char *correct_input) {
char *input = fgets(s, size, stream);
if (input == NULL) {
return NULL;
}
int len = strlen(input);
if (len > 0 && input[len-1] == '\n') {
input[len-1] = '\0';
}
time_t start_time = time(NULL);
while (1) {
if (strcmp(input, correct_input) == 0) {
printf("Correct input!\n");
return input;
}
if (difftime(time(NULL), start_time) >= 10) {
printf("Time's up!\n");
return NULL;
}
printf("Incorrect input, please guess again: ");
fflush(stdout);
char *guess = fgets(s, size, stream);
if (guess == NULL) {
return NULL;
}
len = strlen(guess);
if (len > 0 && guess[len-1] == '\n') {
guess[len-1] = '\0';
}
input = guess;
}
}
int main() {
char correct_input[] = "password";
char input[100];
char *result = tfgets(input, sizeof(input), stdin, correct_input);
if (result == NULL) {
printf("Input failed!\n");
}
return 0;
}
阅读全文