0

I have a txfile.txt file which has the following data:
3
2716 16253
7721 35149
972 2614

I am trying to read the first integer into a variable using this code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
        int num_cust[1];
        int result; 
        FILE *fp;
        if( (fp = fopen("tsfile.txt", "r")) == NULL)
	{
		perror("Error opening file\n");
		exit(1);
	}

	result = fread(&num_cust[0], sizeof(int), 1, fp);
	if(result != 1)
	{
		printf("read error\n");
		exit(1);
	}
	printf("num_cust = %d\n", num_cust[0]);
	fclose(fp);

}

I expected num_cust to be 3 (the first integer in the file). But the printout shows it to be 856306231. Wondering what can be wrong.

2
Contributors
3
Replies
6
Views
6 Years
Discussion Span
Last Post by prgrmmngaccnt
Featured Replies
  • 1

    you are reading the binary representation of an integer instead of the decimal representation of an integer. [ICODE]result = fread(&num_cust[0], sizeof(int), 1, fp);[/ICODE] reads however many bytes the size of an integer is (on most computers, that is 4 bytes.) So assuming a 4 byte integer, the function would read … Read More

1

you are reading the binary representation of an integer instead of the decimal representation of an integer. result = fread(&num_cust[0], sizeof(int), 1, fp); reads however many bytes the size of an integer is (on most computers, that is 4 bytes.) So assuming a 4 byte integer, the function would read the bytes represented by the characters "3\n27" into the variable result.

You should use the fscanf function for getting input that would be a decimal number like fscanf(fp, "%d", &result);

Edited by chrjs: n/a

Comments
thanks for solving the problem.
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.