1.有main.c,test.c,test1.c,创建Makefile
程序代码:
Makefile:
1 CC=gcc
2 EXE=hello
3 OBJS=$(patsubst %.c,%.o,$(wildcard *.c))
4 CFLAGS=-c -o
5 all:$(EXE)
6
7 #hello依赖test.o main.o
8 $(EXE):$(OBJS)
9 $(CC) $^ -o $@
10
11 #main.o依赖于main.c
12 %.o:%.c
13 $(CC) $(CFLAGS) $@ $^
14
15 .PHONY:clean
16 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/bash
2 read -p "please enter file:" file
3 if [ -b $file ]
4 then
5 echo "dev"
6 elif [ -c $file ]
7 then
8 echo "char dev"
9 elif [ -d $file ]
10 then
11 echo "dir"
12 elif [ -L $file ]
13 then
14 echo "link"
15 elif [ -S $file ]
16 then
17 echo "socket"
18 elif [ -p $file ]
19 then
20 echo "pipe"
21 elif [ -f $file ]
22 then
23 echo "regular"
24 else
25 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的值给到q
16 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 }
运行结果: