2017-09-18 126 views
0

我使用printk作爲內核打印代碼。 我希望使用'\r'(回車)清除printk行。如何在printk中使用回車符

例如:

printk("hello"); 

-> : hello 

printk("\r ....."); 

-> : .... 

但在使用\ R,它不工作,只是打印性格怪異。

char input; 
    if(input=='\b') 
    printk("\r"); 
    else 
    printk("%c",input); 

這是使用它的錯誤方式嗎?以及如何在內核中使用回車? 在這種情況下,我不能使用printk嗎?

+0

我的編譯envio的是Linux(ubunutu)。所以,我不能使用'windows.h' – LocketGoma

+1

'input'是未初始化的。 –

+0

_for printk line clear_ - 你的意思是換一個新的行嗎? – CIsForCookies

回答

0

\ r不清除該行,如果這是您要求的,而是它返回到行的開始並打印之前已打印的內容。

printf("Hello \r123")

將打印

123llo

編輯: 你可以只寫空格就行了。

printk(KERN_CONT,"\r%*c\r, MAX_STRING_LENGTH, 32); 

KERN_CONT不會進入一個新的生產線,而不是

首先\ r返回行

%* C打印的空格數開始根據在同一行上繼續字符串的長度

最後\ r再次返回到行的開始位置。

您可能需要編寫自己的方法來返回字符串的長度,而不是使用MAX_STRING_LENGTH

+0

對不起,但我認爲它不符合我的問題。我已經知道'\ r'是如何工作的。我的問題是如何在內核方法中使用回車,如你解釋 – LocketGoma

+0

編輯,這是否有訣竅? – qwn