I am wondering how to read a file in c... this requires some more background information before you give me something useless

What I have so far:

#include <stdio.h>

int main(void)
{
	FILE *fpr,*fpw;
	char C;
	int I;
	
	fpr = fopen("cwM.dat","r");
	fpw = fopen("echocwM.dat","w");
	
	while (C != EOF)
	{
		fscanf(fpr,"%c",&C);
		fprintf(fpw,"%c",C);
		I = C;
		printf("%d\n",I);
	}

	fclose(fpr);fclose(fpw);
	
	return 0;
}

my real question is what if the file I'm trying to read is: ÿdÿ before you post a solution, check your code against the above file.

Recommended Answers

All 4 Replies

use "wb" and "rb" for writing and reading in data files

For me the question would be why would you use fscanf() to read a single character when fgetc() does it much more efficiently?

Thank You WaltP for pointing me to fgetc() I was looking through the MAN pages and was able to fix my problem by using ftell() to see if the offset stopped changing after each read as follows:

#include <stdio.h>

int main(void)
{
	FILE *fpr,*fpw;
	char C;
	int I, i, EC, t, tl;
	
	fpr = fopen("cwM.dat","r");
	fpw = fopen("echocwM.dat","w");
	EC=0;
	t = ftell(fpr);
	printf("%d\n",t);
	tl=t;
	for(;;)
	{
		C = fgetc(fpr);
		t=ftell(fpr);
		printf("%d\n",t);
		if (t == tl)
		{
			break;
		}
		else
		{
			tl = t;
		}
		fprintf(fpw,"%c",C);
		I = C;
		if (I < 0)
		{
			I += 256;
		}
	}

	fclose(fpr);fclose(fpw);
	
	return 0;
}

Thank You WaltP for pointing me to fgetc()

You're welcome....

I was looking through the MAN pages and was able to fix my problem by using ftell() to see if the offset stopped changing after each read as follows:

Terrible idea. Why not just test the return of fgetc() and process the error or EOF?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.