2017-09-18 23 views
0

私はカーネルプリントコードとしてprintkを使用しています。 printk行のクリアに'\r'(改行)を使用します。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

編集を印刷します。 KERN_CONTではなく、行の先頭に

%の* cはに応じてスペースの数を印刷し、同じ行に

まず、\ rのリターンを続けて新しい行に移動しません

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

文字列の長さ

Last \ rは、行の先頭に戻ります。あなたはMAX_STRING_LENGTH

+0

申し訳ありませんが、私はそれが私の質問にマッチしないと思います。私はすでに '\ r'の仕組みを知っています。私の質問は、あなたが説明したようにカーネルメソッドでキャリッジリターンを使用する方法です – LocketGoma

+0

編集、これはトリックですか? – qwn

関連する問題