相关疑难解决方法(0)

C语言中printf函数的代码

可能重复:
c/c ++函数的源代码

我想知道在哪里可以找到使用的C代码,这样当我写printf("Hello World!")时; 在我的C程序中知道它必须将该字符串打印到STDOUT.我查看了<stdio.h>,但在那里我只能找到它的原型int printf(const char*format,...),但不是内部的样子.

c printf stdio

54
推荐指数
1
解决办法
15万
查看次数

编译的程序如何与操作系统交互?

编译程序时,它将转换为机器可以"理解"的机器代码.这个机器代码如何与操作系统交互以执行从键盘输入的操作?对我来说,似乎机器代码应该运行在比操作系统更低的级别,因此,我无法理解操作系统如何充当编译应用程序和硬件之间的中介.

PS:我刚刚开始进行C++编程,我正在努力了解cin和cout是如何工作的

c++ operating-system

22
推荐指数
2
解决办法
3834
查看次数

为什么我不能从保护模式调用BIOS中断?

对.今天我花了三个多小时试图理解为什么你不能在保护模式下调用bios ISR.我得到的一旦你设置和IDT它不一定是在通常的地址为IVT加段没有固定的大小在保护模式等.但我仍然不明白为什么不能你jsut创建一个4GB段,将您的IDT段映射到BIOS IVT,将所有内容设置为0,然后调用它们.不应该那样吗?

大多数文章要么说:"记住你不能在保护模式下使用BIOS中断!" 没有探索主题或极具描述性和引用陷阱,例外,图片重新制作,缺乏权利和段记录的问题作为其背后的原因.

如果有人能够提出一个更人性化的解释,那将是非常有帮助的...我不怀疑文章所说的内容,我只是想明白为什么会这么"痛苦"!

提前致谢!

protected mode interrupt bios

13
推荐指数
2
解决办法
3345
查看次数

了解printf的硬件

我想知道是否有任何可用的在线资源解释了什么事情,比如printf of C,它解释了在非常低级别发生的事情(BIOS /内核调用)

c hardware

12
推荐指数
2
解决办法
6527
查看次数

printf如何在内部工作?

我很好奇printfLinux内部的工作原理.我不明白它是如何写入数据的STDOUT.

在对内部进行了一些搜索之后,我下载glibc并查看了源代码:

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}
Run Code Online (Sandbox Code Playgroud)

在找到这个之后,我深入研究了这个vfprintf函数 - 但该文件大约有2500行不熟悉的C代码.我正在寻找10,000英尺的解释,如何printf与计算机的内存和输出一起工作,以在屏幕上显示字符.

如果我是汇编代码,我还需要做些什么才能完成相同的任务?它依赖于操作系统吗?

c assembly printf standard-library

12
推荐指数
1
解决办法
1万
查看次数

特定的C功能如何工作?

我正在努力学习C并且我已经非常困惑了.

在我使用的OOP语言中,存在执行方法重载的能力,其中相同的函数可以具有不同的参数类型并且以最合适的方式调用.

现在在C中我知道情况并非如此,所以我无法弄清楚以下问题,printf()如何工作.

例如:

char chVar = 'A';
int intVar = 123;
float flVar = 99.999;

printf("%c - %i - %f \n",chVar, intVar, flVar);
printf("%i - %f - %c \n",intVar, flVar, chVar);
printf("%f - %c - %i \n",flVar, chVar, intVar);
Run Code Online (Sandbox Code Playgroud)

现在因为C不支持函数重载,printf如何设法获取任何类型的任意数量的参数,然后与它们一起正常工作?

我试图通过下载glibc源程序包找到printf()工作,但似乎可以找到它,虽然我会继续寻找.

这里有人可以解释C如何执行上述任务吗?

c printf overloading

10
推荐指数
2
解决办法
2万
查看次数

printf如何在内部工作.

可能重复:
没有汇编的C/C++函数定义

嗨再次,我想知道printf如何在内部工作...在内部我指的是使用什么底层系统调用/ ISR等机制...而不是关于变量参数列表...

原因:我正在使用FASM但是控制台i/o几乎没有,我知道我可以使用c库中提供的printf(我不知道如何但这是另一个点)

谢谢.

c assembly

5
推荐指数
1
解决办法
1万
查看次数

可以在Linux的代码中使用BIOS中断吗?

我在Linux中使用汇编语言编写了一个简单程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗?

assembly interrupt bios nasm system-calls

4
推荐指数
1
解决办法
1553
查看次数

将NULL传递给printf%s

#include<stdio.h>
#include<string.h>

int main() {
    char *ptr = NULL;

    printf("%s", ptr);//The output is null
    //  printf("%s\n", ptr); //addition of **\n** give segmentation fault 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一个printf输出:(null).但为什么第二个printf产出是: Segmentation fault (core dumped)只是添加:\n

c

1
推荐指数
1
解决办法
1344
查看次数