好文档 - 专业文书写作范文服务资料分享网站

操作系统实验报告-实验二 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

实验二

操作系统实验报告——实验二:C编程环境

实验目的

1. 熟悉Linux下C程序设计的环境; 2. 对系统调用有初步了解。

实验内容

1.Linux下C语言程序的开发过程 a、在用户主目录下用vi编辑C语言源程序(源程序已附后),如:$vi hello.c。 b、用gcc编译C语言源程序:$gcc ./hello.c -o example 这里gcc是Linux下的C语言程序编译器(GNU C Compiler),./hello.c表示待编译的源文件是当前工作目录下的hello.c,-o example表示编译后产生的目标代码文件名为example。

c、若编译不正确,则进入vi修改源程序,否则,运行目标代码:$./example 。 注意:

这只是gcc最基本的用法,其他常用选项有:-c , -S , -O , -O2, -g 等。

2.编辑、调试下面c语言程序,说明该程序的功能。 #include #include int main() {

int n,a[200],carry,temp,i,j,digit = 1; printf(\ scanf(\ a[0] = 1;

for( i = 2; i <= n; ++i) {

for( j = 1, carry = 0; j <= digit; ++j) { temp = a[j-1] * i + carry; a[j-1] = temp % 10; carry = temp / 10; }

while(carry) {

a[++digit-1] = carry % 10; carry /= 10; } }

printf(\ for( i = digit; i >=1; --i) { printf(\ }

1

实验二

printf(\ return 0; }

程序运行结果截图:

程序实现功能:

计算非负数的阶乘,阶乘运算的结果的个位十位百位……分别保存在a[0],a[1],a[2]……

3.编写命令解释程序 (1)内容:

利用C语言编写一个微型命令解释程序,接受并解释以下命令:

1.dir //列当前目录 2.cop 文件1 文件2 //拷贝文件 3.era文件名 //删除文件 4.dis字符串 //显示字符串 5.end //结束,退出 (2)要求:

1.命令应该由空格隔开;

2.进行命令合法性检查,若不合法,显示出错信息,等待重新输入; 3.调用shell命令来完成各项功能。 (3)思路:

2

实验二

1.用指针数组形式定义命令保留字表和shell命令字表。 静态数组形式如下:

char *cwt[ ]={\ //命令保留字表 char *scwt[ ]={\//shell命令字表 2.输入命令字fgets(string,buff_size,stdin); 3.分离命令字strcspn(); 4.比较命令字strcmp();

5.执行shell命令:使用系统调用system()。

程序实现源代码:

//非纯原创,代码略有借鉴 #include #include #include

//分离命令保留字及其后面部分

void apart(char input[],char cmpstr[],char output[]) { char tmp[30]=\ int i=0,j=0,n,m=0;

for(;i

//分离命令: strcspn返回tmp中第一次为空格的位置,所以命令后面必须有空格 for(n=0;n

//分离命令后面部分保留至output字符数组 for(n=strcspn(tmp,\ output[m]=tmp[n]; m++; } }

int main() {

char *cwt[ ]={\ //命令保留字表 char *scwt[ ]={\//shell命令字表 char input[30]=\ //存放输入串

char cmpstr[30]=\ //存放分离后的命令保留字 char output[30]=\ //存放命名保留字后面部分 char shellstr[30]=\

printf(\ printf(\ printf(\ ||cop file1 file2-\\n\ printf(\ ||era filename -\\n\ printf(\ ||dis string -\\n\ printf(\ ||end -\\n\

3

实验二

printf(\ int i,j; while(1){ i=0;

printf(\ fgets(input,30,stdin); //fgets(s,buff_size,stdin)

//从键盘读入一串字符,包括空白等符号在内。读入到字符数组 s 里

apart(input,cmpstr,output);

//比较字符串str1和str2是否相同。如果相同则返回0; while(strcmp(cmpstr,cwt[i])!=0&&(i<=4)) i++;

//i等于4,执行end,退出程序 if(i==4) { strcpy(shellstr,scwt[i]); strcat(shellstr,output);//字符串连接函数 system(shellstr); break; }

//i<4,执行其他命令 else if(i<4){

strcpy(shellstr,scwt[i]); strcat(shellstr,output); system(shellstr); //执行shell命令 } else

printf(\

//清空字符串,为下一次输入准备 for(j=0;j<=30;j++) { input[j]='\\0'; cmpstr[j]='\\0'; output[j]='\\0'; shellstr[j]='\\0'; } }

return 0; }

程序运行结果截图:

4

实验二

5

实验二

6

操作系统实验报告-实验二 - 图文 

实验二操作系统实验报告——实验二:C编程环境实验目的1.熟悉Linux下C程序设计的环境;2.对系统调用有初步了解。实验内容1.Linux下C语言程序的开发过程a、在用户主目录下用vi编辑C语言源程序(源程序已附后),如:$vihello.c。b、用gcc编译C语言源程序:$gcc./hello.
推荐度:
点击下载文档文档为doc格式
0o0sl1ff677yqpo85se79mzf00wron00itz
领取福利

微信扫码领取福利

微信扫码分享