2.8:Maefile、计算单词个数、判断文件类型、单词逆置

1.有main.c,test.c,test1.c,创建Makefile

程序代码:

Makefile:

  1 CC=gcc2 EXE=hello3 OBJS=$(patsubst %.c,%.o,$(wildcard *.c))4 CFLAGS=-c -o5 all:$(EXE)6 7 #hello依赖test.o main.o8 $(EXE):$(OBJS)9     $(CC) $^ -o $@10     11 #main.o依赖于main.c12 %.o:%.c13     $(CC) $(CFLAGS) $@ $^14 15 .PHONY:clean16 clean:17     @rm $(OBJS) $(EXE)  

main.c

  1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 void fun();5 void fun1();6 int main(int argc, const char *argv[])7 {8     fun();9     fun1();10     return 0;11 }  

 test.c:

  1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 void fun()5 {6     printf("hello\n");7     printf("world\n");8 } 

test1.c:

  1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 void fun1()5 {6     printf("good study\n");7 } 

运行结果:

2.输入字符串,计算单词个数

程序代码:

  1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int main(int argc, const char *argv[])5 {6     char str[20]="";7     gets(str);8     int i=0,count=0;9     int flag=0;//前一个字符为空格10     while(str[i]!='\0')11     {12         if(str[i]==' ')//如果当前字符是空格,空13             flag=0;14         else if(flag==0)//如果当前字符不为空格,前一个字符为空格15         {16             flag=1;17             count++;18         }19         i++;20     }21     printf("word num=%d\n",count);22     return 0;23 }  

 运行结果:

3. 在终端输入一个文件名,判断文件的类型

程序代码:

  1 #!/bin/bash2 read -p "please enter file:" file3 if [ -b $file ]4 then5     echo "dev"6 elif [ -c $file ]7 then8     echo "char dev"9 elif [ -d $file ]10 then11     echo "dir"12 elif [ -L $file ]13 then14     echo "link"15 elif [ -S $file ]16 then17     echo "socket"18 elif [ -p $file ]19 then20     echo "pipe"21 elif [ -f $file ]22 then23     echo "regular"24 else25     echo "error"26 fi 

运行结果:

程序代码:

  1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int main(int argc, const char *argv[])5 {6     char str[]="  I  am  Chinese";7     //去掉多余空格8     char *p=str;//定义两个指针指向字符串9     char *q=str;//一个指向源字符串,另一个指向新字符串10     while(*p!='\0')//遍历字符串11     {12         //前后两个都是空格,删除一个13         if(*p==' '&&*(p+1)!=' '||*p!=' ')14         {15             *q=*p;//如果符合规范,把p的值给到q16             q++;//指针q后移17         }18         //否则只有指针p后移19         p++;//指针p后移20     }21     *p='\0';22     char *i=str,*j=str+strlen(str)-1;23     //整体逆置24     while(i<j)25     {26         char t=*i;27         *i=*j;28         *j=t;29         i++;j--;30     }31     //单词逆置32     i=j=str;33     while(*i!='\0')34     {35         //到空格或'\0'结束36         while(*j!=' '&&*j!='\0')37             j++;38         //交换i到j之前的字符39         char *k=j-1;40         while(i<k)41         {42             char t=*i;43             *i=*k;44             *k=t;45             i++;k--;46         }47         //跨过空格48         while(*j==' ')49             j++;50         i=j;51     }52     puts(str);53     return 0;54 }    

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/468932.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析Linux追踪技术之ftrace:Tracepoint

文章目录 概述Tracepoint使用定义Tracepoint添加Tracepoint调用 Tracepoint数据结构TRACE_EVENT实现DECLARE_TRACE__DECLARE_TRACE trace_xxx函数相关参考 概述 Tracepoint&#xff08;跟踪点&#xff09;是添加到代码流程中的调用点&#xff0c;并且允许开发者注册自定义的回…

TCP高频知识点

本篇文章主要讲述一下在面试过程中TCP的高频知识点 1.TCP三次握手流程图: 客户端发送一个SYN&#xff08;同步&#xff09;报文段给服务器&#xff0c;选择一个初始序列号&#xff0c;并设置SYN标志位为1。服务器接收到客户端的SYN报文段后&#xff0c;回复一个ACK&#xff08…

webgis后端安卓系统部署攻略,超详细Termux攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

如何利用SpringSecurity进行认证与授权

一、SpringSecurity简介 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#x…

【排序】归并排序

归并排序 动图演示&#xff1a; 基本思想&#xff1a;分治思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子…

深入理解C语言(4):文件操作详解

文章主题&#xff1a;文件操作详解&#x1f30f;所属专栏&#xff1a;深入理解C语言&#x1f4d4;作者简介&#xff1a;更新有关深入理解C语言知识的博主一枚&#xff0c;记录分享自己对C语言的深入解读。&#x1f606;个人主页&#xff1a;[₽]的个人主页&#x1f3c4;&#x…

Linux中alarm/setitimer函数(信号函数)

alarm函数 函数原型&#xff1a; unsigned int alarm(unsigned int seconds); 函数描述&#xff1a;设置定时器&#xff08;闹钟&#xff09;。在指定seconds后&#xff0c;内核会给当前进程发送 14&#xff09;SIGALRM信号。进程收到该信号&#xff0c;默认动作终止。每个进程…

JAVA-多进程开发-创建等待进程

前言 在项目中&#xff0c;为了实现“并发编程”&#xff08;同时执行多个任务&#xff09;&#xff0c;就引入了“多进程编程”&#xff0c;把一个很大的任务&#xff0c;拆分成若干个很小的任务&#xff0c;创建多个进程&#xff0c;每个进程分别负责其中的一部分任务。 这也…

【数据结构】计算节点个数和二叉树高度(C语言版)

数据结构——计算节点个数、二叉树高度 一、计算各种节点 &#xff08;1&#xff09;计算总节点&#xff1a;&#xff08;2&#xff09;计算单分支节点&#xff1a;&#xff08;3&#xff09;计算双分支节点&#xff1a; 二、计算二叉树高度 代码实现&#xff1a; 一、计算各种…

NSSCTF Round#18 RE GenshinWishSimulator WP

恶搞原神抽卡模拟器 看到软件的界面&#xff0c;大致有三种思路&#xff1a; 修改石头数量一直抽&#xff0c;如果概率正常肯定能抽到&#xff08;但是估计设置的概率是0&#xff09;在源码里找flag的数据把抽卡概率改成100%直接抽出来 Unity逆向&#xff0c;根据经验应该dnsp…

MySQL数据库⑩_视图+MySQL用户管理(增删查改)

目录 1. 视图的概念和规则限制 2. 视图的基本使用 2.1 创建视图 2.2 修改视图影响基表 2.3 修改基表影响视图 2.4 删除视图 3. MySQL用户管理 3.1 用户信息 3.2 创建用户 3.3 修改用户密码 3.4 删除用户 4. 用户权限 4.1 MySQL权限 4.2 给用户授权 4.3 回收权限…

Vue-自定义属性和插槽(五)

目录 自定义指令 基本语法 (全局&局部注册) 指令的值 练习&#xff1a;v-loading 指令封装 总结&#xff1a; 插槽&#xff08;slot&#xff09; 默认插槽 插槽 - 后备内容&#xff08;默认值&#xff09; 具名插槽 具名插槽基本语法: 具名插槽简化语法: 作…