【无标题】如何不用#include<stdio.h>完成printf输出(linux系统)

之前我们操作系统老师布置了两道题目,第一题很简单。(1)现在,请重新用C语言写一段程序,编译运行后实现与hello.c编译运行同样的效果。

但有一个附加条件:不允许使用printf()函数。

 

请在答案中附上你的代码,以及运行的结果。

将printf函数换成用puts()函数或者用putchar()函数都可以完成字符串的输出。

详细过程我就不放出来了。

重点在第二道题。

(2)在上一题的基础上,再次用C语言写另一段程序,编译运行后实现与hello.c编译运行同样的效果。

但这次的附加条件改为:不允许使用#include <stdio.h>,以及<stdio.h>中定义的任何函数。

 

请在回答中附上你的代码,以及运行的结果。

这题我刚拿到手上想了很多种方法,用external先声明函数printf()然后在mian中调用printf,但是这样试过失败了,可能是哪一步步骤出了问题,后来问了老师才知道这题的解决方法。操作系统课本上面导论部分提到了系统调用,常见的系统调用中有一个write(写)函数,可以完成不需要使用#include<stdio.h>以及<stdio.h>中定义的任何函数。

详细步骤为:

int main(int argc,char *argv[])

{

char *msg=“hello Wrold!”;

write(1,msg,11);

return 0;

}

其中的write(1,msg,11)中11原先我写的是strlen(msg)发现strlen会报错原因是没有了stdio.h,strlen无法调用,但改为11后就可以正常输出了,这样就用系统调用完成了老师的问题。

本人纯属小新,第一次发表,有错误的地方还请各位大佬指出让我多多学习。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里德里希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值