Hello ,
This is a program intends to tell the number of the each word from the sentence. For example If write

naber aga naber naber aga

output will be like this:

naber 3
aga 2

I have written a program , I have a little problem I take a output like this :
naber 3
aga 2
naber 3
naber 3
aga 2

I know why I take this problem I have a solution . This is the codes by the way :
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void sonuc(char *,char *,int,int *);
int main() {
	char *s=malloc(40*sizeof(char));
gets(s);
       char *b,c[40];
	char *p[10];	
	char a[40];
	strcpy(a,s);
	b=strtok(a," ");
	int y=0;
	int x;
strcpy(p[0],b);
	printf("%s",p[0]);
	int i=1;
	int m=0;
	while(b!=NULL) {
       x=strlen(b);
for(m=0;m<i;m++) {
			if(strcmp(p[m],b)==0) {
                              b=strtok(NULL," ");
				continue; }
		}
			strcpy(c,s);
		sonuc(c,b,x,&y);
                 printf("%s kelimesinden %d tane var\n",b,y);
		y=0;
            b=strtok(NULL," ");
		i++;
		}
	return 0;
}





		void sonuc(char *d,char *str,int t,int *ptr) {
if(strstr(d,str)==NULL) return;
else {
  d=strstr(d,str);
			*ptr+=1;
			sonuc(&d[t],str,t,ptr); }
}
algorithm is not really hard. I am sure you will figure it out easily.

I have a solution for the problem . I can save each word into a struct or pointer string then I can compare the current word with the former words I have passed.If there is a same I can stop the loop to the beginning.

I want to know if there is another solution or algorith for tis program which is far more simpler than mine.