Code:
int intarray[ X ] = { filledwithcolor }, *intptr = intarray;
char chararray[ (X/COLS) * (1+sizeof(int)) ] = {0}, *charptr = chararray;
while( charptr < chararray + sizeof( chararray ) )
{
size_t col;
for( col = 0; col < COLS; col++ )
*((int*)charptr++) = *intptr++;
*charptr++ = '\n';
}
fwrite( chararray, sizeof( chararray ), 1, fp );
:shiftyeyes:
[edit]
that cast / increment is bugging me. Let's go with this:
Code:
union u
{
char *cp;
int *ip;
} hah;
int intarray[ X ] = { filledwithcolor }, *intptr = intarray;
char chararray[ (X/COLS) * (1+sizeof(int)) ] = {0};
for( hah.cp = chararray; hah.cp < chararray + sizeof( chararray ); *hah.cp++ = '\n' )
{
size_t col;
for( col = 0; col < COLS; col++ )
*(hah.ip++) = *intptr++;
}
fwrite( chararray, sizeof( chararray ), 1, fp );
If a union isn't the right answer, you're asking the wrong question!
[/edit]
Quzah.