2017-09-18 45 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