我正在嘗試開發一個使用程序集和C的基本操作系統,而且我在開發鍵盤驅動程序時遇到困難。 我用以下兩種功能通過鍵盤來獲得來自用戶的線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;
}
然而,當我試圖獲取用戶名和用戶密碼,我問他,然後再輸入用戶名輸入密碼,問題是密碼覆蓋導致錯誤數據的用戶名。如何將密碼寫入用戶名?這是否意味着getline()
中分配的char* arr
在每次訪問該函數時都具有相同的地址? 感謝您的幫助
製作緩衝區的副本? (你有一個'malloc'或者什麼東西實現了吧? – michaelb958 2013-05-07 23:01:58
我不認爲我可以使用'malloc' ,而且我正在用'-freestanding'模式編譯 – 2013-05-07 23:14:48
我知道你不能使用股票' malloc';我已經嘗試過系統編程,我想知道你是否實現了一個'malloc'或'kmalloc'什麼的(你應該擔心密碼之前擔心的) – michaelb958 2013-05-07 23:21:20