lv1 Linux C语言基础
day1必备Linux命令和C语言基础
文件的打开显示命令
1.1 ls命令
pwd:查看当前所处的路径
cmd --help/man cmd:查看命令的帮助手册
ls:查看当前路径下所有的文件
ls -l:列表形式显示文件夹
ls -a:显示隐藏文件夹/文件
“*”通配符:ls .txt 把当前目录下的.txt文件列出来
ls 1 把当前目录下1开头的文件列出来
1.2 cd命令
cd:打开/切换 目录/路径
cd … :意思是到上一级目录;
cd …/…上上级目录
cd - :意思是返回到上次的目录,类似windows返回 ;
cd /:意思是回到根目录。
cd ~:返回到home目录
1.3 vim命令
vim filename :打开或新建文件,并将光标置于第一行首
vim +n filename :打开文件,并将光标置于第n行首
vim + filename :打开文件,并将光标置于最后一行首
vim +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
方向键上:可以获取上次的命令,同样方向键下获取下一步的命令
Tab:自动补全功能
文件夹的创建/删除/移动命令
2.1创建
touch test.txt:在当前目录下创建test.txt文件
touch .test1.txt :创建test1.txt隐藏文件 .代表隐藏
mkdir(make directory缩写) bb:在当前目录下创建bb文件夹
2.2删除
rm test.txt:删除当前目录下的test.txt文件
rm -d bb:删除当前目录下的bb文件夹
rm -r bb:删除当前目录下的bb文件夹
2.3复制和移动
文件(夹)移动
mv test.txt aa:将test.txt文件移动到aa文件夹,也可以使用绝对路径------相当于剪切
mv 1.txt ./2.txt:将1文件移动到2文件,实质上就是1文件重命名为2文件
文件(夹)复制
cp test.txt aa:将test.txt文件复制到aa文件夹
cp -r aa/bb:将aa文件夹复制到bb文件夹
Which:查看命令文件所在的位置
文件搜索
Find 搜索范围 搜索条件
示例一:find /home(目录) -name 125.txt(文件名)
示例二:find /home(目录) -name ‘12*’(文件名) 模糊查找12开头的文件
find /home(目录) -name ‘12???’(文件名) :查找12开头后面有四个字符的文件
示例三:find /home(目录) -iname ‘abc’(文件名) 忽略大小写查找abc aBC Abc等文件都可
示例四:find /home(目录) -size+1(单位数据块 1块=512字节=0.5KB 2k=4块)
vi常用快捷键&GCC编译
x 删除光标处的字符
dd 删除整行
i 在光标前插入文本
a 在光标后插入文本
o 当前行下插入新行
u 撤销最后一次修改
:wq 保存退出
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
3.1光标控制命令
命令 光标移动
h或^h 向左移一个字符
j或^j或^n 向下移一行
k或^p 向上移一行
l或空格 向右移一个字符
G 移到文件的最后一行
nG 移到文件的第n行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
3.2在vi中添加文本
命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
3.3在vi中删除文本
命令 删除操作
x 删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
X 删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
dw 删至下一个字的开头
ndw 从当前光标处往后删除n个字
dG 删除行,直到文件结束
dd 删除整行
ndd 从当前行开始往后删除
db 删除光标前面的字
ndb 从当前行开始往前删除n字
:n,md 从第m行开始往前删除n行
d或d$ 从光标处删除到行尾
3.4在vi中查找与替换
命令 查找与替换操作
/text 在文件中向前查找text
?text 在文件中向后查找text
:s/oldtext/newtext 用newtext替换oldtext
:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
& 重复最后的:s命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令
:v/text/command 在所有不包含text的行运行command所表示的命令
3.5在vi中复制文本
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
3.6GCC编译命令
最简单的编译命令是(默认生成的可执行文件是 a.out):
gcc main.c
如果需要指定输出文件,则需要使用如下的命令:
gcc main.c – o main
使用-Wall 选项可以输出所有的警告信息:
gcc main.c -o main -Wall
与共享库进行链接,应使用-l 选项再加上库程序的名字,例如,程序引用了 math 库中的 pow 函数:
gcc -Wall main.c -o main – lm
day2 数据类型及运算符
数据类型
逻辑类型:
只有两个量true和false,表示逻辑真值和逻辑假值。
整数类型:
整数类型包括char ,short,int和long
浮点类型:
包括 float和double
void类型:
主要说明不返回值的函数或指向任意类型的指针等。
bool类型
bool 类型不是基本类型需要引入一个头文件——#include
如果不引用头文件可使 用 _Bool ,但TRUE和false在头文件中,若使用还需引用头文件
用于确定数据长度头文件 ——#include
char类型
使用char数据类型的变量需要注意,防止数据超出值域
变量
2.1变量的基础
变量在程序中用变量名表示。变量名由用户根据其用途任意命名。
变量名由字母、数字、下划线组成,不能以数字开头,不能和C的关键字重名。
在程序运行时,变量占据储存空间的大小由其数据类型决定。
变量在内存空间中的首地址,成为变量的地址。
2.2变量的说明
变量说明的一般形式是:<存储类型> <数据类型> <变量名>
<存储类型>是关键词auto(默认)、register、 static和extert
<数据类型>可以是基本数据类型,也可以是自定义的数据类型。
2.3变量的存储类型
auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句李。(默认值是随机的)
在函数以的某程序段内说明auto存储类型的变量可以省略关键字auto,比如:auto int k;--int j;-- double x;
reister 称为寄存器型,register 变量是想将变量放入CPU的寄存器中,这样可以加快程序的运行速度。
如果申请不到就是用一般内存,同auto。
2.5注意事项:
register变量必须是能被CPU所接受的类型。这通常意味着register变量必须是一个单个的值,并且长度应该小于或等于整形的长度。
不能用“&”来获取register变量的地址。
由于寄存器的数量有限,真正起作用的register修饰符的树木和类型都依赖于运行程序的机器。
某些情况下,把变量保存在寄存器中反而会降低程序的运行速度。因为被占用的寄存器不能在用于其他程序或者变量被使用的次数不够多,不足以装入变量所带来的的额外开销。
2.6变量的储存类型
2.6.1 static储存类型
static变量称为静态储存类型的变量,既可以在函数体内(修饰局部变量),也可以在函数体外(修饰全局变量)说明。(默认是0(全局变量默认值就是0))
static修饰局部变量默认值由随机变为0。(局部变量在一个范围内使用由内存创建和销毁,经static修饰之后变为随着程序而存在,程序结束才会被销毁。)
局部变量使用static修饰,有以下特点:
在内存中以固定地址存放的,而不是以堆栈方式存放
只要程序没有结束,就不会随着说明他的程序段的结束而消失,他下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。
static修饰的全局变量,其他文件无法使用。
2.6.2存储类型extern
当变量在一个文件中的函数体外(全局变量)说明,说有其他文件中的函数或程序段都有可能引用这个变量。
external称为外部参照引用型,使用extern说明的变量是想引用在其他文件中函数体外部(全局变量)说明的变量。(使用其他文件中的全局变量是要把两个文件联合起来编译)
运算符
两个float之间不能取余(%)
逻辑与运算特点:短路特性-遇0截止;
逻辑或运算特点:短路 - 遇1截止
~x代表按位取反的意思。
“%#x”作用是x代表16进制,#是打印出结果自动加上0X前缀。
^位异或运算:异为真,相同为假。
利用或运算和位运算可以吧一个无符号数的某一位快速置1。
如何把一个无符号数的某位快速清0 ?
利用与运算,取反,位运算
条件运算符“?:”
是三目运算符,其运算的一般形式是:
<表达式1>?<表达式2>:<表达式3>
int x = 70 x++ > 70 ? 首先判断的是70 > 70为假在进行x+1(若是++x就是先X+1)的操作。
逗号运算符,运算顺序小括号内从左到右运算,最终将最右边表达式的运算值赋给最左边。( float x = 10.5 x+=5的运算结果是 10.5+5=15.5).
day3 输入输出专题
字符输出函数putchar
C库中专门的字符输出函数putchar。
C语言没有I/O语句,I/O操作由函数实现。:#include
。
字符输出函数:
格式:putchar(c)
参数:c为字符常量、变量或者表达式
功能:把字符c输出到显示器上
返值:正常,为显示的代码值;
在C语言的标准中putchar函数的参数和返回值都是整型,也就是说以字符对应的ASCII码的形式传参或者返回的。
格式输出函数printf
putchar函数只能在终端输出一个字符型的数据,如果想输出一定格式若干个数据,且为任意类型,可以用printf函数。
头文件:stdio.h
格式:printf(“格式控制串” ,输出表)
输出表:要输出的数据
格式控制串:
格式说明:%[修饰符]格式字符, 用于指定输出格式
返回字符:原样输出。
字符输入函数getchar
格式:getchar()
功能:从键盘读取入一字符
返回值:正常,返回读取的代码值;出错或结束键盘输入,返回-1(按下ctrl+d 直接结束输入)
格式输入函数scanf
格式: scanf(“格式控制串',地址表 )
功能: 按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束
返值 : 正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符&
说明
用“%C”格式符时,空格和转义字符作为有效字符输入。
4.1总结
输入数据时,遇以下情况认为该数据结束:
遇空格、tab、回车
遇非法输入
遇宽度结束
解决垃圾字符的方法:
调用getchar函数,清楚垃圾字符;
用“% 空格c”或者“%*c”来“吃掉”。
字符串输入函数gets
格式:char*gets(char*s)
功能:从键盘输入以回车结束的字符串放入字符数组中,并自动加'\0'
说明1:输入串长度应小于字符数组维数
说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志。
字符输出函数puts
格式:int puts(constant char* s)
功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以'\0'结束。
使用sqrt函数时加上math.h头文件,
gcc a.c -lm
day4控制语句
1.控制语句- if
第一阶段:从语法方面了解知识本身;
第二阶段:大量编程,想尽办法去写代码,积累代码量。
if - else 语句
if (表达式)语句块1
else语句块2 gg=G//格式变化
控制语句-switch
switch(表达式)
case常量表达式1:语句序列1;
case常量表达式2:语句序列2;
......
case常量表达式n:语句序列n;
default:语句 n + 1; Switch语句专门处理多路分支的情形。
Switch语句的使用:
每个常量表达式(case后跟的常量表达式)的值必须是各不相同,否则将会出现矛盾。
当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。
switch中的表达式可以是整形、字符型表达式或枚举。
case常量:只起语句标号的作业。
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。
多个case可以执行一组语句。
循环语句-while
while语句:
while(表达式){statatments;
} do-while语句:
do{
statatments;
}while(表达式); pow(a,n)用以计算a的n次方。使用时引用#include
头文件。
while语句和do-while语句的区别:
while语句条件在前先条件后做
do-while语句条件在后先做在条件。
循环语句-for
for语句:
for(expression1;expression2;expression3)
expression1 ----初始值;
expression2 ----结束条件;
expression3 -----自增。 4.1执行过程:
先求解表达式1
求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5;
求解表达式3;
转回执行步骤2;
执行for下面的语句。
控制语句_循环辅助语句:
break语句:
用于提前跳出循环体,只能跳出一层;
break只能用在循环语句和switch语句中。
sqrt(n)//根号n 控制语句_循环辅助语
continue语句:
结束本次循环,接着判定下一次循环是否执行循环
continue 只能在循环语句中使用,即只能在 for、while 和 do…while 语句中使用
注意!continue遇break的区别:
continue语句并没有使整个循环终止。而break终止本层循环
return语句:
return语句的一般形式:
return(<表达式>) 主要用于终止包含它的函数的执行
若终止的为主函数,则主程序结束。
控制语句_循环语句-while
循环结构程序:
当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。
理由是:
-无条件跳转易于理解。
-可以减少嵌套。
-可以避免那种忘记更新某一个出口点的问题
-算是帮助编译器作了代码优化
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
