Ejemplo n.º 1
0
void recPrint(char *buffer, char *freeCh, NodePtr* temp, int prefixes){
    int occur = temp -> numOfOccur;
    int superWords = temp -> numOfSuperwords;
    if(temp -> isParent == 0){
        printf("%s %d %d %d\n", buffer, occur, prefixes, superWords);
        return;
    }
    
    if(temp -> isWord) printf("%s %d %d %d\n", buffer, occur, prefixes, superWords);
    
    prefixes += temp -> numOfOccur;
    int *intArr = temp -> usedIndices;
    int i = 0;
    for(i = 0; i < 26; i++){
        if(intArr[i] == 1){
            *freeCh = i + 'a';
            freeCh++;
            recPrint(buffer, freeCh, &temp -> children[i], prefixes);
            //now we need to remove all extra characters till the next turn
            freeCh--;
            *freeCh = '\0';
        }
    }
    
}
Ejemplo n.º 2
0
// Writes record to a binary file. File descriptor must be passed as argument.
ssize_t recWriteBin(int fh, Record *rec) {
	size_t size = sizeof(Record);
	ssize_t written;

	printf("Writing Record: ");
	recPrint(rec);

	if ((written = write(fh, rec, size))!=sizeof(Record)) {
		perror("write error");
	}
	return written;
}
Ejemplo n.º 3
0
// Writes record to a binary file. File descriptor must be passed as argument.
ssize_t recWriteBin(int fh, Record *rec) {
	size_t size = sizeof(Record);
	ssize_t written;

	// Tells the user what record it is going to be written.
	printf("Writing Record: ");
	recPrint(rec);

	if ((written = write(fh, rec, size))!=sizeof(Record)) {
		perror("write error");
	}
	return written;
}
Ejemplo n.º 4
0
// reads the output file in order to ensure everything went ok
int testRead(const char *filename) {
	int fh;

	if((fh = open(filename,O_RDONLY)) < 0) {
		perror("Error opening binary file");
		return 1;
	} else {
		Record rec;
		while(read(fh, &rec, sizeof(Record))>0) {
			printf("Read Record: ");
			recPrint(&rec);
		}
		close(fh);
		return 0;
	}
}
Ejemplo n.º 5
0
void printTrie(){
    
    if(root.isParent == 0){
        printf("empty dictionary\n");
    }
    char *buffer;
    char *freeCh;
    int *intArr = root.usedIndices;
    int prefixes = 0;
    int i = 0;

    for(i = 0; i < 26; i++){
        if(intArr[i] == 1){
            buffer = calloc(101, sizeof(char));
            freeCh = buffer;
            *freeCh = i + 'a';
            freeCh++;
            recPrint(buffer, freeCh, &root.children[i], prefixes);
            free(buffer);
        }
    }
}