#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char * data = "cs\n "
"cs hello there\n "
"hello there cs\n "
"cs\n "
"hello there cscs there cs.\n "
"cs cs cs\n "
"test\n " ;
int main( void )
{
char * remove = "cs" ; // word that needs to be removed char word[ 50 ] ; // word that is being checked
char space;
int nwords = 0 ; // total no. of words in input
int nremoved = 0 ; // no. of removals
int nwritten = 0 ; // no. of words on this line
// treat dada above as file
FILE
* f
= fmemopen
( data
, strlen ( data
) , "r" ) ;
// dump original text
while ( fscanf ( f
, "%49s" , word
) == 1 ) {
// print or skip word;
if ( cmp == 0 ) {
nremoved++;
} else {
nwritten++;
}
// treat white space / newline
if ( fscanf ( f
, "%c" , & space
) != 1 ) space
= '\n ' ;
if ( space == '\n ' ) {
nwritten = 0 ;
} else {
}
nwords++;
}
printf ( "--\n %d words read\n %d words removed\n " , nwords
, nremoved
) ;
return 0 ;
}
CiNkZWZpbmUgX0dOVV9TT1VSQ0UKCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmNoYXIgKmRhdGEgPSAiY3NcbiIKICAgICAgICAgICAgICJjcyBoZWxsbyB0aGVyZVxuIgogICAgICAgICAgICAgImhlbGxvIHRoZXJlIGNzXG4iCiAgICAgICAgICAgICAiY3NcbiIKICAgICAgICAgICAgICJoZWxsbyB0aGVyZSBjc2NzIHRoZXJlIGNzLlxuIgogICAgICAgICAgICAgImNzIGNzIGNzXG4iCiAgICAgICAgICAgICAidGVzdFxuIjsKCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgKnJlbW92ZSA9ICJjcyI7ICAgIC8vIHdvcmQgdGhhdCBuZWVkcyB0byBiZSByZW1vdmVkCiAgICBjaGFyIHdvcmRbNTBdOyAgICAgICAgICAvLyB3b3JkIHRoYXQgaXMgYmVpbmcgY2hlY2tlZAogICAgY2hhciBzcGFjZTsKICAgIAogICAgaW50IG53b3JkcyA9IDA7ICAgICAgICAgLy8gdG90YWwgbm8uIG9mIHdvcmRzIGluIGlucHV0CiAgICBpbnQgbnJlbW92ZWQgPSAwOyAgICAgICAvLyBuby4gb2YgcmVtb3ZhbHMKICAgIGludCBud3JpdHRlbiA9IDA7ICAgICAgIC8vIG5vLiBvZiB3b3JkcyBvbiB0aGlzIGxpbmUKICAgIAogICAgLy8gdHJlYXQgZGFkYSBhYm92ZSBhcyBmaWxlCiAgICAKICAgIEZJTEUgKmYgPSBmbWVtb3BlbihkYXRhLCBzdHJsZW4oZGF0YSksICJyIik7CiAgICAKICAgIC8vIGR1bXAgb3JpZ2luYWwgdGV4dAogICAgCiAgICBwcmludGYoIiVzLS1cbiIsIGRhdGEpOwogICAgCiAgICB3aGlsZSAoZnNjYW5mKGYsICIlNDlzIiwgd29yZCkgPT0gMSkgewogICAgICAgIGludCBjbXAgPSBzdHJjbXAod29yZCwgcmVtb3ZlKTsKCiAgICAgICAgLy8gcHJpbnQgb3Igc2tpcCB3b3JkOwogICAgICAgIAogICAgICAgIGlmIChjbXAgPT0gMCl7CiAgICAgICAgICAgIG5yZW1vdmVkKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJpbnRmKCIlcyIsIHdvcmQpOwogICAgICAgICAgICBud3JpdHRlbisrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyB0cmVhdCB3aGl0ZSBzcGFjZSAvIG5ld2xpbmUKICAgICAgICAKICAgICAgICBpZiAoZnNjYW5mKGYsICIlYyIsICZzcGFjZSkgIT0gMSkgc3BhY2UgPSAnXG4nOwogICAgICAgIAogICAgICAgIGlmIChzcGFjZSA9PSAnXG4nKSB7CiAgICAgICAgICAgIGlmIChud3JpdHRlbikgcHV0Y2hhcihzcGFjZSk7CiAgICAgICAgICAgIG53cml0dGVuID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoY21wKSBwdXRjaGFyKHNwYWNlKTsKICAgICAgICB9CgogICAgICAgIG53b3JkcysrOwogICAgfQogICAgCiAgICBwcmludGYoIi0tXG4lZCB3b3JkcyByZWFkXG4lZCB3b3JkcyByZW1vdmVkXG4iLCBud29yZHMsIG5yZW1vdmVkKTsKICAgIAogICAgZmNsb3NlKGYpOwoKICAgIHJldHVybiAwOwp9Cg==