在C语言中,如果没有库函数,如何打印变量的任何字符、字符串或值?
例如,如果我不应该使用标准的库函数,如在C语言中,如果没有库函数,如何打印变量的任何字符、字符串或值?,c,printing,printf,character,putchar,C,Printing,Printf,Character,Putchar,例如,如果我不应该使用标准的库函数,如printf(),putchar(),那么如何将字符打印到屏幕上 有没有简单的方法。我对系统调用不太了解,如果我必须使用它们,那么如何使用它们? 因此,任何人都可以建议一种不使用库函数的简单打印方法吗?在linux中,您可以使用write系统调用: write(1, "hello\n", 6); // write hello\n to stdout 如果您无法获得足够的信息,您可以降低一步,以常规方式调用系统调用: syscall(__NR_write,
printf()
,putchar()
,那么如何将字符打印到屏幕上
有没有简单的方法。我对系统调用不太了解,如果我必须使用它们,那么如何使用它们?
因此,任何人都可以建议一种不使用库函数的简单打印方法吗?在linux中,您可以使用
write
系统调用:
write(1, "hello\n", 6); // write hello\n to stdout
如果您无法获得足够的信息,您可以降低一步,以常规方式调用系统调用:
syscall(__NR_write, 1, "hello\n", 6);
关于strace
,您可以使用它查看任何特定程序在运行时使用的系统调用。但请注意,对于“一些简单的解析器”,几乎不需要使用原始系统调用。更好地使用c库的功能
顺便说一下,如果要在Windows中执行上述操作而不使用c标准库,请查找WriteFile和GetStdHandle函数。但不会像linux解决方案那样使用l33t。在标准C中,您不能。C中定义的唯一I/O是通过C标准库函数 在给定的平台上,可能有以下方法:
- 直接进行内核调用。为此,您可能需要编写一些内联程序集。您可以直接调用litb的
调用,而无需使用C库。抓取C库的源代码,看看它是如何完成的write
- 直接写入帧缓冲区。多用户操作系统通常不允许这样做(至少在不进行任何库/内核调用的情况下)
除非您正在编写自己的C库,否则我不知道您为什么要这样做。好的,谢谢大家的回答。我在问题下方的郝先生的评论中找到了一个简单的答案。他的答案是这样简单的程序 Turbo C(DOS程序): 或者试试这个::)-//Hao(一小时前) 我在TurboC上试过了,效果不错。 我想要这样一个简单的解决方案,我想接受它作为正确的答案,但他(郝)给出了它作为一个评论,所以我把它贴在这里,让其他用户知道这代表他,并接受它。再次感谢郝先生。C标准库(请参阅)有一组输入和输出例程,用于读取和写入各种输入和输出资源。C标准库通常建立在目标操作系统提供的系统服务和系统调用的基础上,但对于没有操作系统的嵌入式微控制器,则使用不同的方法 除了C标准库之外,还有其他常用库,如POSIX库(请参阅) 我使用资源这个术语是因为输入请求或输出请求的目标可能是各种各样的东西
- 磁盘上的文件
- 网络连接
- 控制台设备
- 串行通信端口
- 传感器
- 打印机
- 屏幕上的窗口
char far* src = (char far*) 0xB8000000L;
*src = 'M';
src += 2;
*src = 'D';