One of these days your function may end up looking like this.
Code:
void savePGM(FILE *infile)
{
FILE *outfile;
char filename[70], buffer[70];
printf("Please provide a file name: ");
fflush(stdout);
if ( fgets(filename, sizeof filename, stdin) != NULL )
{
char *newline = strchr(filename, '\n');
if ( newline != NULL )
{
*newline = '\0';
}
}
outfile = fopen(filename, "w");
if ( outfile != NULL )
{
while ( fgets(buffer, sizeof buffer, infile) != NULL )
{
fputs(buffer, outfile);
}
fclose(outfile);
}
else
{
perror(filename);
}
}
[edit]Or perhaps:
Code:
outfile = fopen(filename, "wb");
if ( outfile != NULL )
{
size_t read, written;
do {
read = fread(buffer, 1, sizeof buffer, infile);
written = fwrite(buffer, 1, read, outfile);
} while ( read == sizeof buffer );
fclose(outfile);
}