资源描述
实习报告
——嵌入式linux培训
7.16
1.虚拟机文件系统目录介绍:
/bin:系统可执行文件存放目录
/lib:系统库文件存放目录,动态链接库以后缀名.so的形式存在;
/usr:
/include;头文件存放目录
/home:Linux系统用户主目录的存放位置
/opt:用户搭建的一些环境的一般存放位置
/tftpboot:tftp服务器的工作目录
. 当前目录
..上一级目录
~ 当前用户的主目录
2.命令介绍:
cd:切换目录(是cd xike而不是cd /xike)
pwd:显示当前目录的绝对路径
绝对路径:从根目录开始的路径
相对路径:从一个非根目录开始的路径
Ls:以一定的选项显示指定目录的内容,如果没有指定路径默认显示当前的内容;
-a:显示包括隐藏内容在内的所有内容,linux下以.开始的名称属于隐藏内容;
-l:以列表的形式显示内容的详细信息
-d:显示目录本身的信息,一般与l连用;(如果直接输入-d命令,则只会显示一个.表示当前文件名,若输入ld,则才会显示详细信息)
Clear:使命令提示符围绕终端界面的最上端
Man:linux的帮助手册(进去后按Q键返回)
Mkdir:创建目录,后跟目录名(名称或路径)
Rmdir:删除一个空目录
Touch:创建一个空文件(touch dir_test/file)
cp:复制文件或目录(cp note dir_test,将这个文件复制到dir_test)(cp note dir_test/b,复制到dir_test的b文件夹)
-r:递归遍历目录下的所有内容,并复制
Mv:改名或移动(mv dir d)
Rm:删除目录
-r:用于删除目录
-f:忽略任何提示
-i:提示是否删除(sudo rm –rf/这行命令是全部删除,无法恢复,千万别轻易输入)
vi:文本编辑器
命令模式——按a或i或o进入到插入模式——输入hello word——ESC退出编辑模式(即返回命令模式)——输入:冒号指令会跳至最后一行,输入wq+文件名(保存功能)——输入vi hello.c——就可编辑代码(也可查看该文件已写内容)
gcc+源文件名就可编译一个可执行文件.out;
./a.out:执行当前目录下的可执行文件;
今天主要介绍了以上的内容,通过老师的讲解,我逐渐了解到虚拟机的用法和ubuntu操作系统的强大,之前没有接触过,感觉还是有兴趣慢慢学下去的。
7.17.2015
命令模式命令:
nyy p:复制粘贴,n为1时可以省略
ndd p:截切粘贴,同上
ndd:删除(若只有一行时,n可省略)
nyw p:复制n个单词并且粘贴,如果n为1的话,最好不要省略
ndw p: 剪切n个单词并粘贴,同上(如对hello word这段只剪切hello这几个单词)是单词,不是字母,所以要注意n的输入与取值
底行模式命令
w q
:wq是保存功能;shift zz也是
n(表示一个数字):将光标移动到第n行
n1,n2 co n3:复制n1和n2闭区间的内容到n3行,(下图是将2.3行内容复制到了6.7行)
n1,n2 mo n3:移动n1和n2内容到n3行,下图是将原在第8行的内容移动到了11行;
/后跟所需查找字符:查找功能(还有“?”)
替换:
s/str1/str2/:用str2替换当前行的第一个str1:用fengjie替换word:即21行的第一个word
s/str1/str2/g: 用str2替换当前行的所有str1
g/str1/s//str2/g:用str2替换文件中的所有str1:用了nihao替换所有的hello;;
n,s/str1/str2/g:用str2替换从第n行到文件末尾的所有str1:
n,s/str1/str2/:用str2替换从第n行到文件末尾的所有行的第一个str;用tarea替换从9行往后的第一个word:
vi配置项
set nu:显示行号
stynax on:语法高亮显示
set ts=n:设置键的宽度
命令补充:
echo:回显
输出重定向符
>以覆盖的方式重定向
>>以追加的方式重定向
Cat:查看文件内容
data:输出当前时间
ping:测试网络连通性
ifconfig:显示当前的网络适配器的信息
service 服务名 start/stop/estart
ps:查看进程运行情况a u e
user add/user del增加或者删除用户
chmod:设置权限
用户
a所有人
u用户本人
g同组人
o其他人
权限本身
r(4)读
w(2)写
x(1)执行
若是如我将note1文件夹设置了不能读的权限,则用chmod u-r note1;若要恢复,则用chmod u+r note1 即可查看文件夹了。
程序编写,见例子一截图:是先显示还是先睡眠
程序加一个\n就先输出后睡眠:
记住占位符的类型和字节数:
以什么形式显示字符:
符号\r和\n的意思与程序最后执行:如下图在第一个printf里的word后面没有加\n,若加上,则输出就换行:
整个程序编译执行如下:
Scanf显示的用法:scanf从输入缓冲区里面读取相应的信息按照格式化占位符的要求放在给定的变量里
如程序中所示,依次输入23,h,4.5,3.14;因为每输入一个数据都需enter换行,所以就需在前加入scanf(“ ”)语句;若是出现输入字符与程序中想要输入的字符不一致的情况下,则可用以下语句解决这个问题;
scanf(“%*[^\n]”):取走任意多个非\n的字符
scanf(“%*c”):取走任意一个字符
所有步骤如下截图所示:
控制结构:
1.顺序结构
2.分支结构 选择结构
if()()else switch()cade:break;default
case语句用法见程序中;
续表:
3.循环结构
For(;;)while do..while
For循环的问题:for(A;B;C){D}
1. 哪几个语句块可以没有?
A,B,C,D都可以没有,但此时就是一个什么都不执行的死循环;
for(;;);
for(i=0;i<100;i--)不是一个死循环;
2. ABCD四个语句的顺序是什么?
ABDC后BDC,BDC一直到B不成立为止跳出循环;
输入年月日那道题:注意case2语句即判断是否是闰年,注意执行优先级:year%400==0……….(下图程序是老师写的)
题目作业:
1. 输入10个成绩,去掉一个最高分,去掉一个最低分,求平均成绩:注意max和min都赋值为a[0]的时候,不能在scanf前定义,因为那样这两个值都等于了0,导致出现逻辑错误;可如下图所示,进行先输入,后赋值。老师讲的:
自己写的:
1).(直接求平均成绩);
2. 输入10个数,求出10个数中第二大的数;(求最大数)冒泡法:注意数组中元素个数,如第三个for循环中的9-j才是正确的,若是改成10-j,则会导致下面元素的比较中出现啊a[9]与a[10]的比较,而10个元素中没有a[10]。
自己写的:
老师写的:
今天主要讲C语言的基础,scanf,for循环,case语句等的用法,也举了几个具体的例子进行编,尤其要注意scanf输入命令的格式以及特点,for循环也是在C语言编程中比不可少的循环,在“输入年月日后显示是第几天”这个例子中,case语句是被重要使用了,刚开始忘记了其格式,导致出现逻辑错误;所以在以后的编写过程中尤其要注意。在这个环境下对程序的编译和执行都跟以前的编译环境不一样,但其本质都是一样的。
7.18.2015
数组:有限个具有相同数据类型的连续变量的集合
练习作业:
1、 输入年月日,求这个年月日是这一年的多少天(完)
2、 数组1里面有5个数,将数组1的内容复制给数组2;(完)自己编写的:
3、 约瑟夫环
4、 时钟2015-7-18 11:56:30
5、 九九乘法表
6、 9999以内的所有类似于121 1221 111 9999 8888的数字打印出来
7、 题目如下所示(自己编写的)
字符数组:函数介绍;
Strlen:字符串长度;
Strcpy:复制字符串
Strcat:拼接字符串
Strcmp:比较字符串长度
输出结果:
二维数组
输出结果:
编译结果:
函数:
函数的声明:返回类型,函数名(形参列表);
形参列表:形参类型 形参名,形参类型 形参名,…
对于函数的声明形参列表中的形参名可以不写,
如:int fun(int,char,char)
函数的定义:
返回类型 函数名(形参列表)
{
函数体
}
对于函数定义形参列表中的形参名一定要有
如int sum(int m)
{
int s=0;
for(int i=0;i<=m;i++)
s+=i;
return 0;
函数的调用:
函数名(实参名1,实参名2,实参名3……);
void hello(void)://函数定义,这里表示该函数不接受传参,一个也不行;
void hello1()://不写形参列表示该函数可以接受任意多个任意类型的参数,但是并不使用
练习:0 1 2 3 4 5 6 7 8 9 10 11
1 . . . . . . . . . . . .
2 . . . . . . . . . . . .
3 . . . . . . . . . . . .
4 . . . . . . . . . . . .
5 . . . . . . . . . . . .
6 . . . . . . . . . . . .
7 . . . . . . . . . . . .
8 . . . . . . . . . . . .
9 . . . . . . . . . . . .
10 . . . . . . . . . . . .
11 . . . . . . . . . . . .
7.19.2015
练习:
1):int a[]={1,2,3,4,5,6,7,8,9},
1.将该数组下标为4的元素删除,
2.在下标为4的位子上插入一个0;
3. 将数组整体后移4位,溢出的元素插入到数组开始位置
指针:一个用来存放其他变量地址的变量,
1)、32位的无符号整数大小为2的32次方为4G;
Char* p;char *p;一样吗?
抽奖滚动的程序:指向函数的指针
Void function(int*);
Void function(char* p)
{
}
C语言分区:
约瑟夫环程序:
递归:
7.20
1.结构体:注意结构体字节是多少,结构体类型与变量(typedef)
结构体的对齐:?在计算结构体字节时,要注意补齐的概念,通常在笔试填空题出现;具体的见程序截图:
3. 枚举法:bool 布尔
4. C语言文件读和写的程序,见下图所示:写入一个内容到一个文件,可将其读出,fopen,fclose,fwrite,fread等指令:
Fwrite:
Fread:
复制文件程序:
C++:面向过程,面向对象
程序2:
程序3:
五子棋的程序:
结果显示:
看程序理解意思和目的:
笔记全在程序的注释里了:
程序5:注意重载问题,区别于C语言的,就是函数名可以相同
程序6:
7.24.2015
继承:父类和子类的概念protected,private,public的使用和所表达的意思
这个程序说明:多继承:
多态:
1//多态:通过父类的指针或者引用调用相应的虚函数时,实际调用的是给该指针或引用> 赋值的子类对象相应虚函数
2 //只有虚函数才能实现多态
3 //多态的要素:1.父类的指针或引用
4 // 2.虚函数
5 // 3.子类的对象
6 //一个类如果有虚函数,那么这个类的每一个对象里一定有一个虚表指针
7 //虚表指针位于这个对象起始的前4个字节
8 //
9 //纯虚函数:没有函数体内容,virtual void bark()=0;抽象类
10 //特点:1.前面必须要有virtual
11 // 2.含有纯虚函数的类称为抽象类
12 // 3.抽象类不能实力化,意味着不能=定义一个抽象类的对象
展开阅读全文