------------------------------day1---安装Vim和更新命令---------------------------------------
1、更新资源:sudo apt-get update
2、安装软件 vim:sudo apt-get install vimsudo :以管理员权限
cc -v:检查cc编译器(gcc编译器)
clear:清理屏幕
cd :表示进入某个目录 cd ~:进入当前目录的家目录
pwd:查看当前所在路径
ls:查看当前目录下包含文件及文件夹 ls -l:查看当前目录下文件
的详细信息
touch :新建文件XX rm :删除文件XX mkdir :新建文件夹XX
vi(vim) :编辑文件XX
esc:返回命令模式
在命令模式下输入:
:w 保存(write写入)
:q 退出
i:当前光标前插入字符
shift + i:当前行行首插入字符
a:当前光标后插入字符
shift + a:当前行行尾插入字符
o:在下一行插入字符
shift + o:在上一行插入字符
x:删除单个字符
dd:删除所在行
------------------------------day2-第一个Linux下的C语言程序(配置ubuntu网络)---------------------------------------
1,Linux下的C语言有点不同:
#include<stdio.h>
int main() //Linux环境下用int
{
........;
}
2,C语言程序的编译:
cc lx.c 或者 gcc lx.c
执行lx.out命令格式:
./lxout
3,配置网络:
NET模式:
选择net模式,
打开虚拟机网络编辑器,
选择VMware8
进入ubuntu后选择网络为DHCP自动配置
------------------------------day3-一些常用快捷操作和“Makefile”---------------------------------------
一:编辑普通文件:
1. 同时打开两个窗口 —— :sp + 文件名;
2. 两个文件之间的切换 —— Ctrl+W+上/下;
3. 打开行号 —— :set + nu;
4. 剪切 —— 数字+dd;
5. 粘贴:p
2. 两个文件之间的切换 —— Ctrl+W+上/下;
3. 打开行号 —— :set + nu;
4. 剪切 —— 数字+dd;
5. 粘贴:p
二:编辑Makefile:
$ls
min.c max.c main.c
$vi Makefile
#this is a Makefile
main.out:max.o min.o main.c #说明main.out依赖max.o,min.omain.c
gcc max.o min.o main.c -o main.out
#注意
开头的
‘Tab’
键而不是空格,
-o main.out
指定输出为
main.out
max.o:max.c #说明max.o依赖max.c
gcc -c max.c
min.o:min.c
gcc -c min.c #说明min.o依赖min.c
$ls
min.c max.c main.c Makefile
$make
$ls
min.c max.c main.c Makefile min.o max.o main.out
》>>>编写了Makefile后每次编译只需要编译改动后的,已经编译好的不需要再次编译。
------------------------------day4---C语言main函数---------------------------------------
1,main函数的完整形式
#include<stdio.h>
int main(int argv,char* argc[])
{
printf("hello world!!!\n");
return 0; //"return 0"表示返回的值为0,
}
$gcc main.c -o main.out && ls
hello world!!!
ls命令罗列出当前文件夹下的文档
2,main函数的两个参数
#include<stdio.h>
int main(int argv,char* argc[])
{
printf("argv is %d\n",grav);
int i;
for(i=0;i<argv;i++)
{
printf("argc[%d]is: %s\n",i,argc[i]);
}
return 0; //"return 0"表示返回的值为0,
}
$gcc main.c -o main2.out
$./main2.out -l 123 2342 4343 000
argv is 5
argc[0]is: ./main2.out
argc[1]is: -l
argc[2]is: 123
argc[3]is: 4343
argc[4]is: 000
由此可见argc[]是接收执main函数的参数的一个数组,而argv是参数的数量
------------------------------day5--C语言标准输入输出和错误流和重定向---------------------------------------
1,输入输出和错误流
#include<stdio.h>
/*
stdin:输入流文件
stdout:输出流文件
stderr:错误流文件
*/
int main()
{
//printf("please inout the value a:\n");
fprintf(stdout,"please input the value a:\n");
int a;
//scanf("%d",&a);
fscanf(stdin,"%d",&a);
if(a<0){
fprintf(stderr,"the value must > 0");
return 1;
}
return 0; //"return 0"表示返回的值为0,
}
2,重定向和管道:
1)输出重定向
$./exp.out 1>> exp.txt或./exp.out >> exp.txt
#然后“./exp.out”输出的值会输入到“exp.txt”中;
$./exp.out 1> exp.txt
#“>”只查看最新的记录,覆盖模式。
2)输入重定向
$vi input.txt
input.txt中写入
1
2
:wq#退出
$./a.out < input.txt #就相当于输入了两个值
$./a.out 1> t.txt 2>f.txt <input.txt 可以同时设定标
准输出流,标准错误流,标准输入流指定到特定文件中
3)管道符 “|”
和linux里面的一样,可以连接两个C语言程序
例如:
$./add.out | ./ avg.out
最后执行结果
------------------------------day6--gdb调试命令 ---------------------------------------
1,常用命令
list 列出调试文件的源代码
break 行号 //设置调试断点
start //开始执行
p 变量 //查看变量当前值
n //运行下一行代码
step(或s) //执行下一行语句,如果有函数调用则进入到函数中
bt //查看函数堆栈
f 栈号 //跳到“栈号”中函数
命令 | 描述 |
---|---|
backtrace(或bt) | 查看各级函数调用及参数 |
finish | 连续运行到当前函数返回为止,然后停下来等待命令 |
frame(或f) 帧编号 | 选择栈帧 |
info(或i) locals | 查看当前栈帧局部变量的值 |
list(或l) | 列出源代码,接着上次的位置往下列,每次列10行 |
list 行号 | 列出从第几行开始的源代码 |
list 函数名 | 列出某个函数的源代码 |
next(或n) | 执行下一行语句 |
print(或p) | 打印表达式的值,通过表达式可以修改变量的值或者调用函数 |
quit(或q) | 退出gdb 调试环境 |
set var | 修改变量的值 |
start | 开始执行程序,停在main 函数第一行语句前面等待命令 |
step(或s) | 执行下一行语句,如果有函数调用则进入到函数中 |
---------------------------------------------------------------------------------------
//后记:
/* 从云笔记搬运过来,真是体力活。。。 */