为了账号安全,请及时绑定邮箱和手机立即绑定

Linux C语言编程基本原理与实践

难度初级
时长 2小时 0分
学习人数
综合评分9.60
349人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • 学习
    查看全部
  • 哈哈 ,逗
    查看全部
  • http://img1.sycdn.imooc.com//54faa2cd0001d6ee12000530-120-68.jpg
    查看全部
    1 采集 收起 来源:重识C语言

    2015-03-25

  • http://img1.sycdn.imooc.com//54faa2b80001510c12000530-120-68.jpg
    查看全部
    0 采集 收起 来源:重识C语言

    2015-03-07

  • sp max.c ctrl+w+向下箭头 set nu 9+d+d ctrl+w+向上箭头 p wqa
    查看全部
  • test
    查看全部
  • 快点出新课程,老师~
    查看全部
  • 【编写使用管道的程序】 我们在文件夹下,c语言做的每个程序都有一个独立的功能,我们可以将多个小程序使用管道连接到一起。 我们现在写一个程序avg.c,求任意个数的平均值: #include <stdio.h> int main() { int s, n; scanf("%d,%d", &s, &n); float v = s / n; printf("v = %f\n", v); return 0; } 退出vim进行编译cc avg.c -o avg.out,我们得到avg.out,我们输入3000,3。 我们再写一个统计输入的程序input.c: #include <stdio.h> int main() { int flag = 1; int i; int count = 0; int s = 0; while(flag){ scanf("%d", &i); if(0==i) break; count++; s+=i; } printf("%d,%d\n",s,count); return 0; } 我们对这个函数进行编译cc input.c -o input.out,我们输入3000 2000 0,输出总工资5000和人数2。 我们不妨使用以上两个程序结合起来,将所有数据进行统计input.out,之后通过管道经过avg.out计算平均值,命令可以写为./input.out | ./avg.out,然后进行输入,输入完成我们便得到了对应的平均工资。 以上就是通过管道,将两个小程序连接起来得到更复杂的程序的过程。
    查看全部
  • 【管道原理及应用】 Linux系统自带的小工具如何使用,其实这些小工具就是一个应用程序,比方说ls /查看根目录,比方我们要查找某个目录下有多少个文件名包含“ab”,我们可以写ls /etc/ | grep ab,其中这个竖线就是管道的意思,grep是从文本文档中查找指定的行(其实可用于文本搜索)。 将我们前一个程序执行输出流,通过管道得到我们需要的内容。通过管道我们就可以使用很多自动化的方法,管道的应用还有很多。 例如,ps可以查看当前的进程,我们想查看我们当前操作系统是否开启ssh进程,我们可以使用命令ps -e | grep ssh,查看所有进程中是否包含ssh服务的,若有我们便可以进行连接。
    查看全部
  • 【错误流】 我们将程序进行一些修改,如下: #include <stdio.h> int main() { printf("input the int value i:\n"); int i, j; scanf("%d", &i); printf("input the int value j:\n"); scanf("%d", &j); if(0!=j){ printf("%d/%d=%d\n",i,j,i/j); }else{ fprintf(stderr, "j != 0\n"); return 1; } return 0; } 对程序进行编译cc main.c,得到./a.out,分别根据提示输入8和4得到结果“8/4=2”,我们使用命令echo $?,得到0说明程序正常输入,下面我们来测试一下错误流,再次执行程序./a.out,我们输入8和0,并使用echo $?命令得到返回值为1,则有错误流显示的结果“j != 0”。 我们能否将正确和错误的结果分别倒入(写文件的方式)到不同的文件中去呢?命令我们写./a.out 1>t.txt 2>f.txt,正确的导入到t.txt中,错误的导入到f.txt。同样地,我们还可以把输入流加到刚才的命令中去。 根据以上讲的,有: 标准输入流 ==> 键盘输入 标准输出流 ==> 终端输出 标准错误流 ==> 错误输出 我们再结合通道,就可以写出有实际意义的命令来。
    查看全部
  • 【输入输出流以及错误流的重定向机制】 Linux几乎可以用于任何领域,这里我们不得不提出linux的通道,管道起到了很重要的作用,不同应用程序之间要配合使用,就需要用到管道。 我们这里先给出一个例子main.c,主要介绍输入流,输出流和错误流的重定向机制,对于管道的理解会比较容易些。 #include <stdio.h> int main() { printf("input the int value i:\n"); \\printf其实对fprintf的封装,是从标准输出流(即stdout)来输出这个过程 scanf("%d", &i); //默认输入流是键盘 printf("input the int value j:\n"); scanf("%d", &j); printf("i+j=%d\n", i+j); } 执行命令编译cc main.c,得到a.out,运行a.out,我们分别输入3和5输入到终端。我们标准输出流是1,输出入是0。我们可以使用命令./a.out 1>> a.txt,其中>>符号(不写参数就是输出流),之前默认输出流是终端,现在我们则改为输出到a.txt中,我们执行命令后,分别输入3回车后再输入5。再使用命令cat a.txt,我们可以看到我们已经输出到文件里的内容。 我们再次执行./a.out >> a.txt,我们再次输入参数,完成后我们再次使用cat来查看a.txt文件里的内容,发现之前的内容还在,新的输出内容追加到了后面。 再举一个重定向的例子,我们使用命令ls /etc >> etc.txt,我们将ls目录下的内容输入到了etc.txt文件中;但我们如若改重定向符号想覆盖掉之前的内容,可以把双箭头>>改为单箭头>,则文件中先前的内容就会被覆盖掉。 【输入流重定向】 我们可以创建一个文件vi input,txt,内容如下: 6 8 我们再次执行./a,out < input.txt,不存在追加模式,所以我们用单箭头<,我们可以将要输入的内容全部在input.txt中准备好,命令执行后,我们便在终端上可以看到结果。
    查看全部
  • 【标准输入流,输出流,错误流】 现在有cio.c文件: #include <stdio.h> //标准输入输出 /* stdin stdout stderr */ int main() { printf("hello world!\n"); //输出功能由标准输出流完成,printf是系统封装后的 int a; scanf("%d", &a); //标准输入流,错误流是系统出错的时候的 printf("input value is : %d\n", a); return 0; } 在我们输入a.out时,当程序执行的一瞬间,系统给程序提供了一个进程,当程序启动时,系统也提供给程序一系列的指针。linux将所有的外设(摄像头,打印机云云)也罢等等,都视为文件。当启动应用程序时候,也当文件操作,会产生三个文件(stdin,stdout,stderr,即标准输入,输出,错误流)。 默认情况下,输入流就是键盘,stdout也可以切换默认为显示器,我们可以切换为网卡或者打印机,错误流同理。我们在启动文件的时候,都会产生这三个文件。 printf函数是一个封装过的函数: printf("Please input the value a:\n"); fprintf(stdout, "please input the value a:\n"); 因为stdout默认是显示器,上两句就是等价的,printf其实就是fprintf封装后得到的。 同样,我们也有scanf和fscanf的关系(下面两句是等价的): scanf("%d", &a); fscanf(stdin, "%d", &a); 同样,我们也有错误流: if(a<0){ fprintf(stderr, "the value must > 0\n"); return 1; } return 0; 如何让程序知道出错了,我们通过返回值1和0体现,再次编译cc cio.c -o a2.out,我们运行a2.out,输入2则正常执行,当输入-1,则有我们对应的提示,即错误流就发挥作用了。 其实Linux一个很大的系统,就是由这些类似的小工具完成的,当等于0是为正确,错的话为其他值。当然,标准的输入流,输出流,以及错误流也可以重定向。
    查看全部
  • sudo apt-gat
    查看全部
  • 建立一个main.c文件 #include <stdio.h> int main(int argv, char* argc[]) { printf("hello world!\n"); return 0; } 我们使用命令 gcc main.c -o main.out && ./main.out linux通过&&符号将两个指令作为一个指令输出了,但是linux是如何确定第一条指令是否正确输出了呢? 我们再次使用./main.out,然后可以使用命令echo $?,若返回0则说明程序正常,但是若为别的数字则说明程序执行失败了,返回的是一个错误码(好比windows下蓝屏了,就会返回一个错误码)。 返回正确则会返回0,是因为我们的程序里面最后写的是return 0,但当我们将这个return 0改为reutrn 101后,我们再使用指令echo $?,发现返回的是101。 【关于return 0和命令连接符&&】 我们分别对main.c程序进行修改(return后一个为0,一个为101),分别生成main.o和main2.o文件。 return 0:gcc main.c -o main.o return 101:gcc main.c -o main2.o 之后我们使用命令./main.o && ls和./main2.o && ls,发现前者即返回hello world!同时显示了当前的目录(其中ls为显示当前目录命令),但是后者却只返回hello world!,即&&符号后面的语句没有执行。我们两个命令执行后,分别执行echo $?命令,前者返回0,后者返回101。 我们知道&&是and操作,需要前一句执行正确才能执行and(即&&)后面的内容。对于上面的那个例子,我们不禁可以推断出,0在linux下即为(程序执行)正确的意思,因此才会执行&&后面的ls命令。
    查看全部
  • 假设有很多.c以及.o文件的时候,我们就需要gcc后面跟一串.c文件等等,那么我们是否有很方便的命令来提高效率呢? make工具就可以很清晰和快速的将文件进行整理,make内部使用了gcc。 首先我们检查一个我们是否安装了make工具(使用命令 make -v,若安装则显示安装信息,版本号码,若未安装,我们使用命令sudo apt-get install make)。 我们约定一个文件makefile来进行我们之前写过的文件进行配置。 makefile文件中可以写注释,以井号开头。 hello.out是我们的目标文件,但其中需要max.o,min.o,hello.c这三个文件,我们在makefile写下: # this is make file。注意 hello.out:max.o min.o hello.c gcc max.o min.o hello.c # 同时我们写出max.o的文件来源 max.o:max.c gcc -c max.c min.o:min.c gcc -c min.c 删除以o为后缀的文件:rm *.o 最上面的文件是我们最终需要的文件hello.out,同时它是由max.o,min.o,hello.c,同时我们再给出这三个文件锁依赖的文件(其实就是递归),找到各自的生成的源头文件。若最后我们没有在gcc中指定输出名称,则最后使用make命令(也就是直接命令make回车),就生成a.out文件,若要指定生成的文件名,我们就可以使用修改Makefile文件内的代码(改为gcc max.o min.o hello.c -o hello.out)。 此外,还需要注意的是,在Makefile文件中,我们gcc命令前需要有6个空格(即一个TAB键),若不是6个空格,则在使用make命令时,则会报错导致无法生成out文件等。
    查看全部

举报

0/150
提交
取消
课程须知
本课程为C语言中级课程 学习本课程需要了解C语言以下基本语法:变量、常量、顺序、循环、分支、函数等。
老师告诉你能学到什么?
如何在真正的商业环境(Linux)下编写C语言程序 如何编译一个项目以及makefile如何编写 C语言真正的本领(制作小工具) 多个c语言小工具如何构成强大的软件系统

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!