我有一个非常简单的下面的代码,从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