当前位置:  开发笔记 > 编程语言 > 正文

如何在C中打印没有库函数的变量的charcater,字符串或值?

如何解决《如何在C中打印没有库函数的变量的charcater,字符串或值?》经验,为你挑选了2个好方法。

例如,如果我不应该使用像printf,putchar这样的标准库函数,那么如何轻松地将字符打印到屏幕上.有没有简单的方法来做到这一点.我不太了解系统调用,如果我必须使用它们,那么如何?

那么任何一个建议都可以轻松打印而不使用库函数?



1> derobert..:

在标准C中,你不能.C中定义的唯一I/O是通过C标准库函数.

在给定的平台上,可能有办法:

直接进行内核调用.您可能需要编写一些内联汇编来执行此操作.您可以write直接进行litb的调用,而无需使用C库.获取C库的源代码,看看它是如何完成的.

直接写入帧缓冲区.多用户操作系统通常不允许这样做(至少不进行任何库/内核调用).

除非您正在编写自己的C库,否则我不确定您为什么要这样做.


'plz发送codez'不是SO的意思.

2> Johannes Sch..:

在linux中,您可以使用write系统调用:

write(1, "hello\n", 6); // write hello\n to stdout

如果你不能得到足够的,你可以更低一点,一般调用系统调用:

syscall(__NR_write, 1, "hello\n", 6);

值得了解的是strace,您可以使用它来查看运行时任何特定程序使用的系统调用.但请注意,对于"一些简单的解析器",几乎不需要使用原始系统调用.更好地使用c库的功能.

顺便说一句,如果你想在不使用c标准库的情况下在Windows中执行上述操作,请留意WriteFile和GetStdHandle函数.虽然不会像linux解决方案一样l33t.


`objdump -T /lib/libc.so.6 | grep syscall`告诉我`syscall`仍然是一个库函数:-D
讨厌您,这是一个库函数。最有可能在您的C库中。
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有