Concordance of Word

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • beanie
    New Member
    • Nov 2007
    • 3

    Concordance of Word

    i am a c programming beginner and i am trying to Create a concordance of Word Count for a text File in c programming but my code isn't working.please can u help me out.here is my code:
    [code=c]
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    #include <stdlib.h>
    struct word {
    struct word *left; /* tree to the left */
    struct word *right; /* tree to the right */
    char *WORD;
    int count;
    }word;
    static struct word *root = NULL;
    void memory_error(vo id)
    {
    fprintf(stderr, "not enough memory\n");
    exit(8);
    }
    char *fp(char *fp)
    {
    char *p;
    p = (char*)malloc(( unsigned) (strlen(fp) + 1));
    if (p == NULL)
    memory_error();
    strcpy(p, fp);
    int compword(const void *WORD1, const void *WORD2);
    return (p);
    }
    void enter(struct word **word, char *WORD)
    {
    int result;
    char *fp(char *);
    if ((*word) == NULL) {
    (*word) = ((word*)malloc( sizeof(struct word)));
    if ((*word) == NULL)
    {printf("not enough mem");
    exit(1);
    }
    }
    (*word)->left = NULL;
    (*word)->right = NULL;
    (*word)->WORD = fp(WORD);
    (*word)->count=1;
    return;
    }
    result = strcmp((*WORD)->word,WORD);
    if (result == 0);
    {
    (*word)->count+=1;
    return;
    }
    if (result < 0);
    {{
    enter(&((*word)->right),WORD) ;
    else
    enter(&((*word)->left),WORD);
    }
    void scan(char *name)
    {
    char WORD[100];
    int index;
    int ch;
    FILE *f;
    f = fopen(name, "r");
    if (f == NULL) {
    fprintf(stderr, "Unable to open %s\n", name);
    exit(8);
    }
    while (1) {
    ch = fgetc(f);
    if (isalpha(ch) || (ch == EOF))
    break;
    }
    if (ch == EOF)
    break;
    WORD[0] = ch;
    for (index = 1; index < sizeof(WORD); ++index) {
    ch = fgetc(f);
    if (!isalpha(ch))
    break;
    WORD[index] = ch;
    }
    WORD[index] = '\0';
    enter(&root, WORD);
    }
    fclose(f);
    }
    void print_tree(stru ct word *top)
    {
    if (top == NULL)
    return;
    print_tree(top->left);
    printf("%s\n", top->WORD);
    print_tree(top->right);
    }
    int main(int argc, char *argv[])
    {
    if (argc != 2) {
    fprintf(stderr, "Wrong number of parameters\n");
    fprintf(stderr, " on the command line\n");
    fprintf(stderr, "Usage is:\n");
    fprintf(stderr, " words 'file'\n");
    exit(8);
    }
    scanf(argv[1]);
    print_tree(root );
    return (0);
    }
    [/code]
    would be very grateful for your help.
    Last edited by numberwhun; Dec 13 '07, 03:51 PM. Reason: add code tags
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    First, you failed to use the necessary Code Tags when posting code into the forums. I have added them to the post for you. Please know that code tags are required for all code posted to the forums.

    Second, you have posted your thread in the Member Introductions forum when it is clearly a "C" question. There are many forums here on TSDN devoted to specific topics and there is on for C/C++, where this thread should have been posted.

    I am moving the this thread there now.

    Regards,

    Jeff

    Comment

    Working...