|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
1200+ fellow developers rate and compare features of the top IDEs, like Visual Studio, Eclipse, RAD, Delphi and others, across 13 categories. Enjoy this FREE Download of the IDE User Satisfaction Study by Evans Data Corporation. Download Now!
|
|
#1
|
|||
|
|||
|
Help, input from a file
Iam trying to count the frequency of words read from a file, but when l try to run the program it just hungs up does nothing, lam relatively new in this field. My code is as shown bellow, what lam l not doing right?
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #define MAXWORD 1000 struct tnode { char *word; int count; struct tnode *left; struct tnode *right; }; struct tnode *addtree(struct tnode *, char *); void treeprint(struct tnode *); struct tnode *talloc(void); int getword(char *, int); char *strdupl(char *); /* word frequency count */ int main(void) { struct tnode *root; char word[MAXWORD]; root = NULL; while (getword(word, MAXWORD) != EOF) if (isprint(word[0])) root = addtree(root, word); treeprint(root); exit (0); } /* addtree: add a node with w, at or below p */ struct tnode *addtree(struct tnode *p, char *w) { int cond; if (p == NULL) { /* a new word has arrived */ p = talloc(); /* make a new node */ p->word = strdupl(w); p->count = 1; p->left = p->right = NULL; } else if ((cond = strcmp(w, p->word)) == 0) (p->count)++; /* repeated word */ else if (cond < 0) /* less than into left subtree */ p->left = addtree(p->left,w); else /* greater than into right subtree */ p->right = addtree(p->right,w); return p; } /* treeprint: in-order print of tree p */ void treeprint(struct tnode *p) { if (p !=NULL) { treeprint(p->left); printf("%4d %s\n", p->count, p->word); treeprint(p->right); } } /* talloc: make a tnode */ struct tnode *talloc(void) { return (struct tnode *) malloc(sizeof(struct tnode)); } /* getword: get next word or character from input */ int getword(char *word, int lim) { FILE *pFile; int c; char *w = word; pFile = fopen ("/mnt/samba/k/patrick/testp.txt","r"); while (isspace(c = fgetc(pFile))) ; if (c != EOF) *w++ = tolower(c); if (!isprint(c)) { *w = '\0'; return c; } for ( ; --lim > 0; w++) if(!isalnum(*w = fgetc(pFile)) && !ispunct(*w)) { ungetc(*w,pFile); break; } *w = '\0'; fclose(pFile); return word[0]; } /* strdupl: make duplicate of s. (strdup builtin) */ char *strdupl(char *s) { char *p; p = (char *) malloc(strlen(s)+1); if (p != NULL) strcpy(p, s); return p; } |
![]() |
| Viewing: Dev Shed Forums > Programming Languages > C Programming > Help, input from a file |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|