diff --git a/chap1/double.c b/chap1/double.c index 78d6e41..2778cd7 100644 --- a/chap1/double.c +++ b/chap1/double.c @@ -2,10 +2,12 @@ #include #include #include +#include int linenum; int getword(FILE *, char *, int); +void doubleword(char *, FILE *); int main(int argc, char *argv[]) { int i; @@ -27,6 +29,7 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; } +// getword reads a word from fp into buf, returning true if it was able to do so. int getword(FILE *fp, char *buf, int size) { int c; c = getc(fp); @@ -50,3 +53,20 @@ int getword(FILE *fp, char *buf, int size) { ungetc(c, fp); return buf[0] != '\0'; } + +void doubleword(char *name, FILE *fp) { + char prev[128], word[128]; + + linenum = 1; + prev[0] = '\0'; + while (getword(fp, word, sizeof word)) { + if (isalpha(word[0]) && strcmp(prev, word) == 0) + // word is a duplicate + { + if (name) + printf("%s:", name); + printf("%d: %s\n", linenum, word); + } + strcpy(prev, word); + } +} diff --git a/chap1/example.txt b/chap1/example.txt new file mode 100644 index 0000000..6a9dba2 --- /dev/null +++ b/chap1/example.txt @@ -0,0 +1,3 @@ +hey there +it's been a very very long +time since diff --git a/chap1/main b/chap1/main new file mode 100755 index 0000000..1829119 Binary files /dev/null and b/chap1/main differ