Linux c
vim基本操作
命令行
同时新打开一个文件,如果没有该文件会创建一个新文件
sp name
撤回上一个命令
u
显示行号
set nu或者set number
取消行号
set nonu或者set nonumber
从光标开始剪切9行
9dd
从光标开始复制9行
9yy
粘贴
p
保存打开的所有文件
wqa
linux中c语言常用
通过一个例子进行解释,一个main()文件,一个max(),一个min(),在main()文件中引用max.h,min.h完成对函数子文件引用
首先是main文件
#include<stdio.h>
#include"max.h"
#include"min.h"
int main()
{
int a=33;
int b=21;
c=max(a,b);
d=min(a,b);
printf("the max is %d,the min is %d",c,d);
return 0;
}
max()
int max(int a,int b)
{
if(a>b){
return a;
}
else{
return b;
}
}
min()
int min(int a,int b)
{
if(a<b){
return a;
}
else{
return b;
}
}
max.h
int max(int a,int b)
min.h
int min(int a,int b)
在linux运行c文件可生成.out文件,通过查看.out文件查看结果,由gcc生成文件,-o指定文件名字为a.out
gcc max.c min.c main.c -o a.out
直接查看a.out中的结果
./a.out
在实际运行中我们常把指定文件先翻译成.o的计算机语言,可以理解为二进制文件,减少电脑识别时间,这样在运行整体程序时为提高速度
生成min的.o文件
gcc -c min.c -o min.o
再直接代替运行即可
gcc min.o max.o main.c
我们在实际操作中,运行一个程序需要同时调用多个文件,会很复杂,通过使用make提前写好执行命令
vim Makefile
a.out:max.o min.o main.c
gcc max.o min.o main.c -o a,out
max.o:max.c
gcc -c max.c -o max.o
min.o:min.c
gcc -c min.c -o min.o
运行make,直接输入
make
封装函数的思想
编写代码是为了解决一个实际问题,而我们在解决这个问题中往往需要重复,许多不可避免的步骤。
此时我们可以对这个流程进行一个整体的剥离,把框架理解出封装出一个函数,只需要进行一次流程描述,在合适的地方只需引用此函数即可,就能避免反复编写同一个内容。
在我们写程序时,就已经在进行这个方法了,我们每次在写c文件时,都需要引用头文件#include<stdio.h>,#include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸。
例如,我们常说的printf函数和scanf函数,也是各自的封装。
fprintf(stdout,"content")
fscanf(stdin,"content")
再举一个简单的实例,打印等腰三角形。
打印等腰三角形,即在每行前一部分打印空格,中间打印星号,后一部分打印空格,换行。同时空格部分每行都累减1,星号累加2。
按照一般方法,我们可以用嵌套的for循环,
void dysjx(int a,char c)
{
int i;
int j;
for(j=1;j<a;j+=2){
/* for(i=0;i<a-j/2;i++){
printf(" ");
}
for(i=0;i<j,i++){
printf("%c",c);
}
for(i=0;i<a-j/2;i++){
printf(" ");
printf("\n");
}
}
}
第一个for循环进行换行,有多少行,同时定义每行中间星号数目;
中间for循环,描述行内变化,每一行长是2a+1,第一个for是第一部分空格,第二个for循环是星号,第三个for循环是第二部分空格,for循环之后换行。星号每次每行增加两个,空格循环就每次减少一个,总长度不变,等腰三角行即可。
使用简便点方法,分装类,我们发现主要是嵌套的for语句比较多,且意思相近,都是为了打印多少个字符。可以这样:
//定义打印字符c,a次
void pc(int a,char c)
{
int i;
for(i=0;i<a;i++){
printf("%c",c);
}
}
源程序就可变成:
void dysjx(int a,char c)
{
int i;
int j;
for(j=1;j<a;j+=2){
pc(a-j/2,' ');
pc(j,c);
pc(a-j/2,' ');
printf("\n");
}
}
同时,里面还有一个换行也会经常使用,可以将使其言简意赅,提高编程效率。
//换行,br在html语言中也正是换行的意思,容易理解。
void br()
{
printf("\n");
}
源程序就可变成:
void dysjx(int a,char c)
{
int i;
int j;
for(j=1;j<a;j+=2){
pc(a-j/2,' ');
pc(j,c);
pc(a-j/2,' ');
br();
}
}