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 }
运行结果: