2015-11-16 61 views
-3

我有一個C程序,它執行scanf以獲取用戶輸入,然後存儲在char數組中。我需要在char數組中輸入一些特定的十六進制值(例如F7,即數字247),但它們不被標準ascii支持,因此我無法編寫等效的ascii字符。我如何在linux shell中將它們寫入以將它們傳遞給scanf?將十六進制值傳遞給Linux中的C shell

非常感謝!

+1

我不知道如果我理解你的問題,但如果你使用的scanf(「%X」,&I)你輸入F7,它會被解讀爲247.這是你想要什麼?如果你仍然需要你的char數組來存儲十六進制數,你可以先讀取它作爲一個字符串,然後用sscanf讀取一個int。 –

+0

問題是我無法編輯代碼,並且scanf使用%s作爲格式,所以我需要一種方法從shell中插入值。 – user3313574

+0

你的意思是'csh'(c shell)與你的標題一樣嗎,還是僅僅是''bash,dash,ksh,zsh'等shell程序? 'csh'。 1.爲'ksh,bash,csh'等添加正確的標籤。2.指出是否可以在你的'c'程序中使用重定向,並且包括測試例如'echo'。 myProgram'。顯示你累了。祝你好運。 – shellter

回答

1

假設你的程序是a.out的,並採取了單字節輸入和你正在使用bash作爲外殼

echo 'A' | ./a.out 

應該說「41」,因爲這是一個大寫字母A的ASCII碼以十六進制形式

接下來的字節太高而無法在ascii中。假設你正在使用bash shell的

echo $'\xf7' | ./a.out 

應該說F7因爲這是這是供入的字節,顯示的轉義序列可用於arbitary字符的十六進制代碼

要在腳本運行幾個一個測試,這同樣是bash的

for c in $'\xff' $'\xfb' $'\xf7' 'A' ;do echo $c| ./a.out;done 
input is hex ff 
input is hex fb 
input is hex f7 
input is hex 41 
相關問題