All pastes #363896 Raw Edit

Miscellany

public text v1 · immutable
#363896 ·published 2007-02-19 19:54 UTC
rendered paste body
// This is the method in question
int ReadItems(FILE *input, int *count, Item *items)

{

	int weight=-1;

	int value=-1;

	int cost=-1;

	int capacity=32;	// Initial capacity for the array

	char buffera[160 + 1];

	

	// Try to allocate memory for the array

	if((items = malloc(sizeof(Item) * capacity)) == NULL)

    {

		printf("Couldn't allocate the item array");

		return -1;

    }

	

	

	// read the header information from the file. This line clears out excess junk before the actual data

	fscanf(input, "%30s %30s %30s", buffera, buffera, buffera);

	

	// Set the number of items in the list equal to zero

	*count=0;

	

	// Scan in the information bit by bit. Yes i know that i have those "OR"ed instead of "AND"ed, this is for debugging.

	while((fscanf(input, "%d", &weight) == 1) || (fscanf(input, "%d", &value) == 1) || (fscanf(input, "%d", &cost) == 1))

	{

		// Print the details out to the screen so i can see what's being scanned in

		printf("\nValues: %d %d %d", value, weight, cost);

		

		// Store the details in my array

		items[*count].weight = weight;

		items[*count].value = value;

		items[*count].cost = cost;

		*count = *count + 1;

    }

	

	if(count == 0)

		return -1;

	

	printf("\nTest: %d", *count);

	fflush(stdout);

	return 1;

}




// This is the input file
Weight		value		Cost
1		7		4
5		6		10
11		6		15
4		5		8
2		4		20
6		3		8
4		2		9
10		2		3
6		1		7


// This is the output of the screen. As you can see, scanf("%d") isn't ignoring whitespace...
Values: -1 1 -1
Values: -1 7 -1
Values: -1 4 -1
Values: -1 5 -1
Values: -1 6 -1
Values: -1 10 -1
Values: -1 11 -1
Values: -1 6 -1
Values: -1 15 -1
Values: -1 4 -1
Values: -1 5 -1
Values: -1 8 -1
Values: -1 2 -1
Values: -1 4 -1
Values: -1 20 -1
Values: -1 6 -1
Values: -1 3 -1
Values: -1 8 -1
Values: -1 4 -1
Values: -1 2 -1
Values: -1 9 -1
Values: -1 10 -1
Values: -1 2 -1
Values: -1 3 -1
Values: -1 6 -1
Values: -1 1 -1
Values: -1 7 -1