例1.统计字符串中的单词次数:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i;
int word=0;
int num=0;
char str[100];
char c;
printf("please enter sentanses: ");
gets(str);
for(i=0;(c=str[i])!='\0';i++)
{
if(c==' ') word=0;
else if(word==0)
{
num++;
word=1;
}
}
printf("There is %d words.\n",num);
return 0;
}
~
1 #include<stdio.h>
2 int Num0fstr(char*Mstr, char*substr);
3 int main()
4 {
5 char src[]="I am a boy I am a boy";
6 char den[]="i";
7 printf("There is %d %s\n",Num0fstr(src,den),den);
8 return 0;
9 }
10 int Num0fstr(char *Mstr,char*substr)
11 {
12 int number=0;
13 char *p;
14 char*q;
15 while(*Mstr!='\0')
16 {
17 p=Mstr;
18 q=substr;
19 while((*p==*q)&&(*p!='\0')&&(*q!='\0'))
20 {
21 p++;
22 q++;
23 }
24 if(*q=='\0')
25 {
26 number++;
27 }
28 Mstr++;
29 }
30 return number;
31 }
~
~
例3.模拟Linux命令行:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#define MAXARG 10
#define LINSIZ 80
#define CMDSIZ 8
extern char **environ;
char *quit="quit.quit";
char cmdbuf[CMDSIZ][LINSIZ];
int cmdflag[CMDSIZ];
int main()
{
int i;
for( ; ;)
{
printf("mini_SH-->");
for(i=7;i>=0;i--)
{
cmdflag[i]=0; /* */
cmdbuf[i][0]='\0';
}
if(i=readcmd()) /* */
docommand(i); /* */
else
printf("read command failed, try again!!!\n");
}
}
readcmd()
{
char c,*p;
int i=0;
p=cmdbuf[0];
while((c=getchar())!='\n')
{
if(c==';')
{
*p='\0';
if(++i==6)
return(++i);
p=cmdbuf[i];
}
else if(c=='&')
{
cmdflag[i]=1;
}
else
*p++=c;
}
*p='\0';
return(++i);
}
docommand(int i)
{
int j, stat, pid;
char *argl[MAXARG], args[LINSIZ];
char c, *argsp, **arglp, *p;
for(j=0;j<i;j++)
{
arglp=argl;
argsp=args;
p=cmdbuf[j];
while((c=*p++)!='\0')
{
while(c==' '|| c=='\t')
c=*p++;
if(c=='\0')
{
*argsp++='\0';
break;
}
*arglp++=argsp;
while(c!=' '&&c!='\t'&&c!='\0')
{
*argsp++=c;
c=*p;
if(c) p++;
}
*argsp++='\0';
}
*arglp=(char *)0;
if(strcmp(argl[0],quit)==0)
{
printf("Bye Bye!\n");
exit(0);
}
if((pid=fork())==0)
{
if(cmdflag[j]) setpgrp();
execve(argl[0],argl,environ);
printf("Returned from execve: %s\n",cmdbuf[i]);
exit(10);
}
else
{
if(! cmdflag[j])
while(wait(&stat)!=pid);
}
}
}