如何在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及其工作。 我想要一个像这样的简单解决方案,我想接受它作为正确的答案,但他(郝)作为评论给了它,所以我粘贴在这里让其他用户代表他知道并接受它。 再次感谢郝先生。