#include <stdio.h>
#include<stdio.h>
#include<string.h>
#define MAXWORD 32
typedef struct
{
char word[ MAXWORD] ;
int count;
} word_and_count_t;
#define MAXWORDCOUNT 1024
word_and_count_t table[ MAXWORDCOUNT] ;
int table_size;
word_and_count_t* find( const char * word ) // range checking ignored
{
int i;
for ( i = 0 ; i < table_size; ++ i )
if ( ! strcmp ( table
[ i
] .
word , word
) ) return table + i;
strcpy ( table
[ i
] .
word , word
) ; table[ i] .count = 0 ;
++ table_size;
return table + i;
}
void display( )
{
for ( int i = 0 ; i < table_size; ++ i )
printf ( "%s - %d\n " , table
[ i
] .
word , table
[ i
] .
count ) ; }
int main( )
{
//
char s[ ] = "The greatness of a man is not in how much wealth he acquires, but in his integrity and his ability to affect those around him positively." ;
//
for ( char * word
= strtok ( s
, " ,." ) ; word
; word
= strtok ( 0 , " ,." ) ) find( word ) -> count++;
//
display( ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0cmluZy5oPgoKI2RlZmluZSBNQVhXT1JEIDMyCnR5cGVkZWYgc3RydWN0CnsKICBjaGFyIHdvcmRbTUFYV09SRF07CiAgaW50IGNvdW50Owp9IHdvcmRfYW5kX2NvdW50X3Q7CgojZGVmaW5lIE1BWFdPUkRDT1VOVCAxMDI0CndvcmRfYW5kX2NvdW50X3QgdGFibGVbTUFYV09SRENPVU5UXTsKCmludCB0YWJsZV9zaXplOwoKd29yZF9hbmRfY291bnRfdCogZmluZCggY29uc3QgY2hhciogd29yZCApIC8vIHJhbmdlIGNoZWNraW5nIGlnbm9yZWQKewogIGludCBpOwoKICBmb3IgKCBpID0gMDsgaSA8IHRhYmxlX3NpemU7ICsraSApCiAgICBpZiAoICFzdHJjbXAoIHRhYmxlW2ldLndvcmQsIHdvcmQgKSApCiAgICAgIHJldHVybiB0YWJsZSArIGk7CgogIHN0cmNweSggdGFibGVbaV0ud29yZCwgd29yZCApOwogIHRhYmxlW2ldLmNvdW50ID0gMDsKCiAgKyt0YWJsZV9zaXplOwoKICByZXR1cm4gdGFibGUgKyBpOwp9Cgp2b2lkIGRpc3BsYXkoKQp7CiAgZm9yICggaW50IGkgPSAwOyBpIDwgdGFibGVfc2l6ZTsgKytpICkKICAgIHByaW50ZiggIiVzIC0gJWRcbiIsIHRhYmxlW2ldLndvcmQsIHRhYmxlW2ldLmNvdW50ICk7Cn0KCmludCBtYWluKCkKewogIC8vCiAgY2hhciBzW10gPSAiVGhlIGdyZWF0bmVzcyBvZiBhIG1hbiBpcyBub3QgaW4gaG93IG11Y2ggd2VhbHRoIGhlIGFjcXVpcmVzLCBidXQgaW4gaGlzIGludGVncml0eSBhbmQgaGlzIGFiaWxpdHkgdG8gYWZmZWN0IHRob3NlIGFyb3VuZCBoaW0gcG9zaXRpdmVseS4iOwoKICAvLwogIGZvciAoIGNoYXIqIHdvcmQgPSBzdHJ0b2soIHMsICIgLC4iICk7IHdvcmQ7IHdvcmQgPSBzdHJ0b2soIDAsICIgLC4iICkgKQogICAgZmluZCggd29yZCApLT5jb3VudCsrOwoKICAvLwogIGRpc3BsYXkoKTsKCiAgcmV0dXJuIDA7Cn0=