diff --git a/lab5/user/lab5/apps/init.c b/lab5/user/lab5/apps/init.c index 947afd2..bcda0f5 100644 --- a/lab5/user/lab5/apps/init.c +++ b/lab5/user/lab5/apps/init.c @@ -54,15 +54,25 @@ char *readline(const char *prompt) c = getch(); if (c < 0) return NULL; - buf[complement_time++] = c; - printf("%c", c); if (c == '\r') { + // 回车 usys_putc('\n'); break; + } else if (c == '\b' || c == 127) { + // 退格 + if (i > 0) { + i--; + usys_putc('\b'); + usys_putc(' '); + usys_putc('\b'); + } + continue; + } else { + usys_putc(c); } + buf[i++] = c; } - - buf[complement_time - 1] = '\0'; + buf[i] = '\0'; return buf; }