我有一個非常簡單的下面的代碼,從stdin
得到4個字節,並以十六進制格式逐字節地打印出來。如何標準化任何字節(0-255)?
// Code may be different but the point is to input any byte value 0 to 255 from stdin
int main(int argc, char** argv) {
char buffer[4];
read(0, buffer, 4); // or gets(buffer)
int i;
for(i = 0; i < 4; i++) {
printf("%x", buffer[i]);
}
}
我遇到的問題是,我感到我可以通過鍵入鍵盤,所以我可以在任何一個字節不能提供給stdin
限制。例如,如果我正在處理ACSII,則不可能給0x11
,因爲ASCII 0x11
是Device Control 1 (oft. XON)
哪個鍵盤沒有。如果我正在處理UTF-8,我會遇到更多問題,因爲字符不使用全部字節(它會上升到0x7f並開始使用2個字節)。
我在找C.在C風格的字符串或常量格式類似"\x11\x11\x11\x11"
像0x11111111
有哪些途徑可給予任何字節0-255到標準輸入,讓我有充分的控制在什麼樣的價值去緩衝區?
編輯:我在一個系統,我沒有權限創建一個文件。
不幸的是,我一直堅持這一個禮拜。非常感謝你!。
根據您的操作系統,您可以將文件重定向到STDIN,並將字節序列放在那裏。 – bstamour 2014-09-30 21:05:19
將它寫入文件並將進程的輸入重定向到所述文件?例如'./a.out
Medinoc
2014-09-30 21:05:23
@bstamour。不幸的是,我在一個我沒有權限制作文件的系統上。我試過類似./a.out <「HI」的樣子,希望它能將字符串「HI」讀作字符串,但不起作用。 – 2014-09-30 21:09:16