chore: double.c from chap1
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
hey there
|
||||
it's been a very very long
|
||||
time since
|
||||
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user