实验三文本处理实验报告一、实验内容1.新建c源程序文件feb.c,编译执行,显示费波纳奇数列:1 123 5 8 13 21 ...输入命令vi feb.c进入vi编辑器,再按i,编写程序如下:#include <studio.h>#include <stdlib.h>Int main(){int i;int fb[20];fb[0] = 1;fb[1] = 1;for(i = 2;i<20;i++){fb[i] = fb[i-1] + fb[i-2];}for(i = 0;i < 20;i++){printf(“%d “,fb[i]);}Return 0;}程序输入完,按Esc,再按:wq退出vi编辑器并且保存feb.c文件。
输入命令gcc feb.c -o feb编译feb.c程序。
最后输入 ./feb 命令执行feb.c程序,显示斐波数列:1,1,2,3,5,8,13,21,34......2.新建文件test2.php,内容如下:<?phpsetcookie($sno,$_POST['sno']);?><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title></head><body bgcolor="green"><?php// put your code herif ($_POST['sstu']){echo 'student:'.$_POST['sno'].'<br>';echo '班级、姓名'.'<br>';echo '答卷>>';}else if ($_POST['stech']){echo 'techer:'.$_POST['tpw'].$_POST['sno'].'<br>';echo '导入学生名单'.'<br>';echo '导入试卷'.'<br>';echo '发试卷'.'<br>';echo '客观题评卷'.'<br>';echo '主观题评卷'.'<br>';}else{echo '祝你好运!';}?><h2>学生登录</h2><form name="stu" method="post" action="index.php">输入学号 <input type="text" size="10" name="sno"><input type="submit" name="sstu" value="登录"></form><h2>教师登录</h2><form name="tech" method="post" action="index.php">输入密码 <input type="text" size="10" name="tpw"><input type="submit" name="stech" value="登录"></form></body></html>遇到的问题:1)在输入中文时,发现没有中文输入法,怎么在linux系统中安装程序?2)因为没有中文输入法,故无法输入分号。
3.打开xg11.txt文件,练习vi命令:(1)移动光标k、j、h、l 功能分别等同于上、下、左、右箭头键Ctrl+b 在文件中向上移动一页(相当于 PageUp 键)Ctrl+f 在文件中向下移动一页(相当于 PageDown 键)H 将光标移到屏幕的最上行(Highest)nH 将光标移到屏幕的第 n 行2H 将光标移到屏幕的第 2 行M 将光标移到屏幕的中间(Middle)L 将光标移到屏幕的最下行(Lowest)nL 将光标移到屏幕的倒数第 n 行3L 将光标移到屏幕的倒数第 3 行w 在指定行内右移光标,到下一个字的开头e 在指定行内右移光标,到一个字的末尾b 在指定行内左移光标,到前一个字的开头0 数字0,左移光标,到本行的开头$ 右移光标,到本行的末尾^ 移动光标,到本行的第一个非空字符(2)删除、修改字符「x」每按一次,删除光标所在位置的“后面”一个字符。
「#x」例如,「6x」表示删除光标所在位置的“后面”6个字符。
「X」大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「#X」例如,「20X」表示删除光标所在位置的“前面”20个字符。
「cw」更改光标所在处的字到字尾处,例如,「c3w」表示更改3个字s 删除游标所在字元,并进入输入模式。
(3)删除、粘贴行、块rc 用 c 替换光标所指向的当前字符nrc 用 c 替换光标所指向的前 n 个字符5rc 用 c 替换光标所指向的前 5 个字符x 删除光标所指向的当前字符nx 删除光标所指向的前 n 个字符3x 删除光标所指向的前 3 个字符dw 删除光标右侧的字ndw 删除光标右侧的 n 个字3dw 删除光标右侧的 3 个字db 删除光标左侧的字ndb 删除光标左侧的 n 个字5db 删除光标左侧的 5 个字dd 删除光标所在行,并去除空隙ndd 删除 n 行内容,并去除空隙3dd 删除 3 行内容,并去除空隙(4)复制、粘贴行、块从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。
用户可将其粘贴到正文中的指定位置:p 小写字母 p,将缓冲区的内容粘贴到光标的后面P 大写字母 P,将缓冲区的内容粘贴到光标的前面yy 复制当前行到内存缓冲区nyy 复制 n 行内容到内存缓冲区5yy 复制 5 行内容到内存缓冲区(5)合并行(6)恢复编辑在编辑文档的过程中,为消除某个错误的编辑命令造成的后果,可以用撤消命令。
另外,如果用户希望在新的光标位置重复前面执行过的编辑命令,可用重复命令:u 撤消前一条命令的结果. 重复最后一条修改正文的命令4.打开xg11.txt文件,练习vi末行命令:(1)删除、复制、移动多行n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下;n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下;n1,n2 d 删除n1-n2行(包括n1,n2)行;(2)写文件、读文件,指定文件路径:r 文件名读取指定文件的内容并将其插入光标所在行下面:e[文件名] 将指定文件读入缓冲区中:e! 不保存所进行的修改,强制重新读入所编辑的文件:w 文件名将缓冲区写入当前所编辑的文件:w 文件路径将文件保存到指定文件路径下:[m,n]w 文件名将缓冲区第m~n行写入指定文件,缺省为整个缓冲区:w! 文件名将缓冲区强制覆盖已存在的文件(3)打开多个文件,命令sp,多窗口切换Ctrl+w在一个窗口中打开多个文件vi file1 file2 file3 打开多个文件:n 切换到下一个文件 (n=next):N 切换到上一个文件如果已经打开一个了一个文件,则在vi的命令输入状态下输入:sp另外一个文件的路径及文件名,如此就可以在一个窗口打开多个文件了。
或者用vi -o file1 file2 file3....用分割屏幕窗口方式同时打开多个文件。
可以使用ctrl + 两次按w 或者ctrl + w 然后按上下键在上下窗口间切换(4)将文件中每行信息替换为信管:1,$s/信息/信管/:s/str1/str2/ 用字符串str2 替换行中首次出现的字符串str1:s/str1/str2/g 用字符串str2 替换行中所有出现的字符串str1:.,$ s/str1/str2/g 用字符串str2 替换正文当前行到末尾所有出现的字符串str1:1,$ s/str1/str2/g 用字符串str2 替换正文中所有出现的字符串str1(5)将文件中每行姓名替换为<a href=”http://120.95.134.104/~学号”>姓名</a>:1,$s/\(201[0-9][0-9]*\)\t(.*\)\t/<a href=”http:\/\/120.95.134.104\/\~\1”>\2<\/a>/ 5.在用户主目录下建立子目录public_html,将文件test2.php复制到public_html;给用户主目录读、执行权限;打开Windows中浏览器,浏览网址http://120.95.134.104/~学号/test2.phpcd 返回根目录下mkdir public_html 建立子目录public_htmlchmod o+rx . 给用户主目录读和执行的权限cp test2.php public_html 将文件test2.php复制到public_html遇到的问题:按照步骤都做了,但没有打开网页,不知道这个是怎么连接起来的。
二实验总结:通过本次实验对vi编辑器有了进一步的了解,包括读写、编辑、移动光标、复制、删除、移动。
本次实验遇到的问题有:1、第一个题就是一个c语言编程题,突然就傻眼了,发现自己学过的知识都已经忘记了,连最基本的语法都不知道了,后来只好去百度了。
学习中需要不断的复习,温故而知新。
加强对之前知识的理解。
2、第二个编辑一段网页代码,一开始自己通过复制粘贴直接就完成了,但后来发现如果要自己去编辑,还存在很多问题,如如何显示中文、在自己的虚拟机里并没有安装中文输入法,如何安装、这个问题并不知道如何解决。