我正在尝试使用程序集和 C 开发一个基本的操作系统,但我一直在开发键盘驱动程序。我使用以下两个函数通过键盘从用户那里获取一行
char getchar() {
char c;
int i;
while(char_count == 0);
c = buffer[0];
for(i=0 ; i<KEYBOARD_BUFFER_SIZE ; i++) {
buffer[i] = buffer[i+1];
}
char_count--;
push_index--;
return c;
}
char* getline(unsigned char password_mode) {
char* line;
char c = 0x00;
int index = 0;
while(c != '\n') {
if(c) {
if(!password_mode)
printch(c);
else
printch('*');
if(c == '\b')
index--;
else
line[index++] = c;
}
c = getchar();
}
line[index] = '\0';
return line;
}
但是,当我尝试从用户那里获取用户名和密码时,我要求他先输入用户名,然后输入密码,问题是密码覆盖了用户名,导致数据不正确。密码如何写在用户名上?这是否意味着每次访问函数时char* arr
分配的地址都相同?getline()
谢谢你的帮助