All pastes #281587 Raw Edit

Stuff

public text v1 · immutable
#281587 ·published 2006-12-16 22:47 UTC
rendered paste body
#include "stdafx.h"
#include <malloc.h>
#include <cstring>
struct word
{
	char *str;
	word *next,*prev;
};
void getData(word *begin,word *curr,word *curr2)
{
	char *buff,c;
	int n;
	FILE *in;
	in=fopen("text.in","r");
	buff=(char*)calloc(64,sizeof(char));
	buff[0]=' ';
	begin->str=buff;
	n=0;
	while((c=getc(in))!=EOF)
	{
		if(c==' ')
		{
			buff[n]='\0';
			curr=new word;
			curr2->next=curr;
			curr->prev=curr2;
			curr->next=NULL;
			curr->str=buff;
			curr2=curr;
			n=0;
			buff=(char*)calloc(64,sizeof(char));
		}
		else
		{
			buff[n]=c;
			n++;
		}
	}
}
void uniqueWords(word *curr,word *curr2)
{
	FILE *out;
	bool flag;
	out=fopen("text.out","w");
	do
	{
		curr2=curr;
		flag=false;
		while(curr2->prev!=NULL)
		{
			curr2=curr2->prev;
			if(strcmp(curr2->str,curr->str)==0)
			{
				flag=true;
				break;
			}
		}
		if(!flag)
		{
			fprintf(out,"%s ",curr->str);
		}
		curr=curr->next;
	}
	while(curr->next!=NULL);
}
void clearMemory(word *curr)
{
	while(curr->next!=NULL)
	{
		curr=curr->next;
	}
	while(curr->prev!=NULL)
	{
		free(curr->next);
		free(curr->str);
		curr=curr->prev;
	}
	free(curr);
}
int main(int argc, char* argv[])
{
	word *begin,*curr,*curr2;
	begin=new word;
	begin->next=NULL;
	begin->prev=NULL;
	curr2=begin;
	getData(begin,curr,curr2);
	curr=begin;
	uniqueWords(curr,curr2);
	clearMemory(curr);
	return 0;
}