之前我们操作系统老师布置了两道题目,第一题很简单。(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后就可以正常输出了,这样就用系统调用完成了老师的问题。
本人纯属小新,第一次发表,有错误的地方还请各位大佬指出让我多多学习。