实验三_LINUX的C语言编程_linux下的c编程实验
实验三_LINUX的C语言编程由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“linux下的c编程实验”。
实验三 LINUX的C语言编程
要求:
1、请查阅资料,掌握vi编辑器的基本使用,包括两种不同模式的区别,如何在两种模式之间切换,以及常用的编辑命令等;
2、使用vi编写一个c程序,要求该程序通过命令行接收用户的输入,其输入参数为FreeBSD系统中的任意文本文件,接收输入后,c程序读取该文件内容,并打印在屏幕上。编辑好后,存为.c文件(如a.c),使用gcc编译该文件,运行结果文件。
3、详细记录学习的内容和实验的整个过程,包括用到的vi命令,c程序源代码,gcc命令,以及执行结果文件的命令等;
4、对整个实验过程进行分析总结,给出详细步骤;
一:vi编辑器的使用
vi 的两种命令模式;
Command(命令)模式,用于输入命令; Insert(插入)模式,用于插入文本;
Visual(可视)模式,用于视化的的高亮并选定正文;
Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。
当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令; 文件的保存和退出 :w 保存;
:w filename 另存为filename; :wq!保存退出;
:wq!filename 注:以filename为文件名保存后退出; :q!不保存退出;
:x 应该是保存并退出,功能和:wq!相同 光标移动
j 向下移动一行; k 向上移动一行; h 向左移动一个字符; l 向右移动一个字符;
插入模式(文本的插入)i 在光标之前插入; a 在光标之后插入;
I 在光标所在行的行首插入; A 在光标所在行的行末插入;
o 在光标所在的行的上面插入一行; O 在光标所在的行的下面插入一行;
s 删除光标后的一个字符,然后进入插入模式; S 删除光标所在的行,然后进入插入模式; 文本内容的删除操作 x 一个字符;
#x 删除几个字符,#表示数字,比如3x; dw 删除一个单词;
#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词; dd 删除一行;
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行; 恢复修改及恢复删除操作; u 撤消修改或删除操作;
查找
/SEARCH 注:正向查找,按n键把光标移动到下一个符合条件的地方; ?SEARCH 注:反向查找,按shift+n 键,把光标移动到下一个符合条件的 替换
:s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
:%s /SEARCH/REPLACE 注:把文档中所有SEARCH替换成REPLACE;
:#,# s /SEARCH/REPLACE/g 注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;
二:编写程序和编译程序
先在home文件夹下建立test文件夹,用于自己的程序开发。
根据题目要求编写相应程序:
编写完程序后保存。
使用gcc命令编译时发现如下问题:
后来上网查找后发现FreeBSD默认不再使用GCC构建,使用Clang/LIVM替代GCC作为默认的C/C++编译器。
于是使用clang命令进行编译如下:
得到输出文件后,再新建一个test.txt文件用于测试。然后执行可执行文件:./a.out
由上可以看出,在执行编译命令后我并没有指定输出文件的类型和名称,a.out为默认输出的名称和类型,可以使用clang a.c –o test来生成不同类型和名称的输出文件。另外看到提示是输入文件的路径,如果是当前文件下的文件,则可以只输入文件的相对路径,如果在别的文件夹下则需要输入文件的绝对路径。如使用#cp /home/test/test.txt /home/test2.txt复制一个文件到别的目录后读取。测试如下:
三:程序源代码
#include int main(){ FILE *file;//定义文件指针
char path[20];//文件路径字符串
char msg[100];//读入数据缓存区
printf(“please enter the path of your filern”);//输出提示
scanf(“%s”,path);//获取文件路径
file = fopen(path);//打开文件
while(fgets(msg,sizeof(masg)-1,file)!=NULL)//逐行读取文件 直到文件末 { printf(“%s”,msg);//输出读取到的文件内容 } fclose(file);//关闭文件 return 0;//返回 } 四:实验总结和分析
本次实验首次使用vi编辑器编写了一段代码,并成功的编译并运行。首先说一下vi编辑器的使用感受,和window不太一样,它有不同的模式,只有在特定的模式下才能执行相应的命令或者操作。而且我发现了另一个很好用的ee编辑器,使用这个编辑器可以很方便的进行文件的操作,主要是它有很丰富的提示。但是为什么vi编辑器是大家常谈的呢?主要是vi编辑器体积小巧,功能强大,虽然在大的系统工程方面不太好用,但是正常的使用来说还是足够的,几乎所有的类似操作系统都会装有这一编辑器,学会vi编辑器的使用可以使自己在没有别的编辑器的情况下还能进行文件的编辑和系统的配置。这样对于日后的开发有很大的好处。另外在发现FreeBSD中没有安装gcc时,我尝试过给器安装一个gcc编辑器,但是却失败了,截图如下(图1),希望通过后面的学习安装上去。
图1:安装gcc编译器失败
另外我又进行了多文件结构的和多控制台的测试。就是通过多个控制台分别编写多个文件,最后统编译链接成一个可执行文件,这样可以大致模仿出ADE的编辑环境,进行多个文件的编写。