#include <stdio.h>
int main(void)
{
int blanks, tabs, newlines;
int c;
int done = 0;
int lastchar = 0;
blanks = 0;
tabs = 0;
newlines = 0;
while(done == 0)
{
if(c == ' ')
++blanks;
if(c == '\t')
++tabs;
if(c == '\n')
++newlines;
if(c == EOF)
{
if(lastchar != '\n')
{
++newlines; /* this is a bit of a semantic stretch, but it copes
* with implementations where a text file might not
* end with a newline. Thanks to Jim Stad for pointing
* this out.
*/
}
done = 1;
}
lastchar = c;
}
printf("Blanks: %d\nTabs: %d\nLines: %d\n", blanks
, tabs
, newlines
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKQp7CiAgaW50IGJsYW5rcywgdGFicywgbmV3bGluZXM7CiAgaW50IGM7CiAgaW50IGRvbmUgPSAwOwogIGludCBsYXN0Y2hhciA9IDA7CgogIGJsYW5rcyA9IDA7CiAgdGFicyA9IDA7CiAgbmV3bGluZXMgPSAwOwoKICB3aGlsZShkb25lID09IDApCiAgewogICAgYyA9IGdldGNoYXIoKTsKCiAgICBpZihjID09ICcgJykKICAgICAgKytibGFua3M7CgogICAgaWYoYyA9PSAnXHQnKQogICAgICArK3RhYnM7CgogICAgaWYoYyA9PSAnXG4nKQogICAgICArK25ld2xpbmVzOwoKICAgIGlmKGMgPT0gRU9GKQogICAgewogICAgICBpZihsYXN0Y2hhciAhPSAnXG4nKQogICAgICB7CiAgICAgICAgKytuZXdsaW5lczsgLyogdGhpcyBpcyBhIGJpdCBvZiBhIHNlbWFudGljIHN0cmV0Y2gsIGJ1dCBpdCBjb3BlcwogICAgICAgICAgICAgICAgICAgICAqIHdpdGggaW1wbGVtZW50YXRpb25zIHdoZXJlIGEgdGV4dCBmaWxlIG1pZ2h0IG5vdAogICAgICAgICAgICAgICAgICAgICAqIGVuZCB3aXRoIGEgbmV3bGluZS4gVGhhbmtzIHRvIEppbSBTdGFkIGZvciBwb2ludGluZwogICAgICAgICAgICAgICAgICAgICAqIHRoaXMgb3V0LgogICAgICAgICAgICAgICAgICAgICAqLwogICAgICB9CiAgICAgIGRvbmUgPSAxOwogICAgfQogICAgbGFzdGNoYXIgPSBjOwogIH0KCiAgcHJpbnRmKCJCbGFua3M6ICVkXG5UYWJzOiAlZFxuTGluZXM6ICVkXG4iLCBibGFua3MsIHRhYnMsIG5ld2xpbmVzKTsKICByZXR1cm4gMDsKfQ==