如何在C中打印没有库函数的变量的charcater,字符串或值?
例如,如果我不应该使用像printf,putchar这样的标准库函数,那么如何轻松地将字符打印到屏幕上。 有没有简单的方法来做到这一点。 我不太了解系统调用,如果我必须使用它们,那怎么样?
那么任何一个建议都可以轻松打印而不使用库函数?
在标准C中,你不能。 C中定义的唯一I / O是通过C标准库函数。
在给定的平台上,可能有办法:
- 直接进行内核调用。 您可能需要编写一些内联汇编来执行此操作。 您可以直接进行litb的
write
调用,而无需使用C库。 获取C库的源代码,看看它是如何完成的。 - 直接写入帧缓冲区。 多用户操作系统通常不允许这样做(至少不进行任何库/内核调用)。
除非您正在编写自己的C库,否则我不确定您为什么要这样做。
在linux中,您可以使用write
system-call:
write(1, "hello\n", 6); // write hello\n to stdout
如果你不能得到足够的,你可以更低一步,一般调用系统调用:
syscall(__NR_write, 1, "hello\n", 6);
值得了解strace
,您可以使用它来查看运行时任何特定程序使用哪些系统调用。 但请注意,对于“一些简单的解析器”,几乎不需要使用原始系统调用。 更好地使用c库的function。
顺便说一句,如果你想在不使用c标准库的情况下在Windows中执行上述操作,请留意WriteFile和GetStdHandle函数。 虽然不会像linux解决方案一样l33t。
好的,谢谢大家的回答。我在郝先生的评论下面找到了一个简单的答案。 他的回答是这样的简单程序
Turbo C(DOS程序):
char far* src = (char far*) 0xB8000000L; *src = 'M'; src += 2; *src = 'D';
或试试这个: http : //en.wikipedia.org/wiki/Brainfuck 🙂 – //好(一小时前)
我试过Turbo C及其工作。 我想要一个像这样的简单解决方案,我想接受它作为正确的答案,但他(郝)作为评论给了它,所以我粘贴在这里让其他用户代表他知道并接受它。 再次感谢郝先生。