-3
我有一個C程序,它執行scanf以獲取用戶輸入,然後存儲在char數組中。我需要在char數組中輸入一些特定的十六進制值(例如F7,即數字247),但它們不被標準ascii支持,因此我無法編寫等效的ascii字符。我如何在linux shell中將它們寫入以將它們傳遞給scanf?將十六進制值傳遞給Linux中的C shell
非常感謝!
我有一個C程序,它執行scanf以獲取用戶輸入,然後存儲在char數組中。我需要在char數組中輸入一些特定的十六進制值(例如F7,即數字247),但它們不被標準ascii支持,因此我無法編寫等效的ascii字符。我如何在linux shell中將它們寫入以將它們傳遞給scanf?將十六進制值傳遞給Linux中的C shell
非常感謝!
假設你的程序是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
我不知道如果我理解你的問題,但如果你使用的scanf(「%X」,&I)你輸入F7,它會被解讀爲247.這是你想要什麼?如果你仍然需要你的char數組來存儲十六進制數,你可以先讀取它作爲一個字符串,然後用sscanf讀取一個int。 –
問題是我無法編輯代碼,並且scanf使用%s作爲格式,所以我需要一種方法從shell中插入值。 – user3313574
你的意思是'csh'(c shell)與你的標題一樣嗎,還是僅僅是''bash,dash,ksh,zsh'等shell程序? 'csh'。 1.爲'ksh,bash,csh'等添加正確的標籤。2.指出是否可以在你的'c'程序中使用重定向,並且包括測試例如'echo'。 myProgram'。顯示你累了。祝你好運。 – shellter