john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

dirnamesV2 dynamic

/* John Pfeiffer 26may08 Receiving piped data of directory names v2 (dynamic memory)*/
/* usage: dir /ad /b | dirnames.c.exe */

#include <stdio.h>
#include <stdlib.h>
typedef struct node tnode;
typedef struct node* nodeptr;

struct node
{  char name[256];
   nodeptr next;
   nodeptr prev;
};

nodeptr talloc(void)
{       return( (nodeptr)malloc( sizeof( struct node)) );       }

int main(int argc, char* argv[])
{   
    int i=0;
    char c, buffer[256];
    nodeptr current;
    nodeptr newnode;                            
    nodeptr root = talloc();
    strcpy(root->name,".");
    root->prev = NULL;
    root->next = NULL;
    current = root;

    c = getchar();
    printf("\nReceiving...\n");
    while( c != EOF )
    {
        if( c == '\n' )
        {   buffer[i] = '\0';
            newnode = talloc();     
            strcpy(newnode->name, buffer);
            newnode->prev = current;
            newnode->next = NULL;
            current = newnode;    
            i=0;            
        }
        else
        {   buffer[i] = c;
            i++;
        }
        c = getchar();        
    }
    i++;
    buffer[i] = '\0';
/*    newnode = talloc();       
    strcpy(newnode->name,buffer);
    newnode->prev = current;
    newnode->next = NULL;
    current = newnode;           
*/    
    while( current != NULL )
    {
        puts( current->name );
        newnode = current;
        current = current->prev;    /* reverse listing */
        free(newnode);  /* we've seen what's inside, now clean up */
    }

    return 0;
}

  • « httpgetV4 1
  • dirnamesV1 iterative »

Published

May 26, 2008

Category

c

~129 words

Tags

  • c 95
  • dirnamesv2 1
  • dynamic 3