Hej.
Zadanie: Plik.txt zawierajacy ciagi danych w postaci cyfr 0 i 1, roznej dlugosci oraz puste linie, trzeba sformatowac
do postaci wyrownanych kolumn w/g klucza:
xxxx | xxxx | xxxx | xxxx |
xxxx | xxxx | xxxx | xxxx |
... itd.
Dane w pliku mniej wiecej wygladaja tak:
10011110001001001100100110110101011000101011111110101111011001100010001101000
1001000111111100101010100010010101110110011110001011011010110110110011101001001101010100110010001001101100100111011100011001110
/*nowa linia*/
100100101000100010100111110111011010110011111100100110110100010011110111010010001011111111000110111100011111010110111110011001010011
100101110100100010111011010011011100110011100100011010100101
/*nowa linia*/
0011111010001010011110010011101001111110110111001110011001100110111101100100101101001100110101111001
110111100010111011001111000111011110001001111001111101110100110110011001101001011000110111101011010100011011000101001111100101
101101111011011110010011000111000101010110010
/*nowa linia*/
...itd.
Probuje z funkcjami fprintf i fgetc fputc w petli, ale program wczytuje znak nowej linii i polyka 1 znak.
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE * src;
FILE * dst;
int c, i, j;
char p = '|';
char nl = '\n';
src = fopen( "src.txt", "r" );
dst = fopen( "dst.txt", "w" );
while(( c = fgetc( src ) ) != EOF )
{
for( j = 0; j < 4; j++ )
{
for( i = 0; i < 4; i++ )
{
if( isdigit( c ) )
fputc( c, dst );
c = fgetc( src );
}
fprintf( dst, "%c", 0x7C );
}
fprintf( dst, "%c", 0x0A );
}
return 0;
}
Dla ulatwienia testow zastapilem ciag zerojedynkowy ciagiem regularnym {1,2,3,4,5,6,7,8,9,0}
1234|5678|9012|3456|
8901|2345|6789|0123|
5678|9012|3456|7890|
2345|6789|0123|4567|
901|2345|6789|0123|
5678|9012|3456|7890|
2345|6789|012|3456|
8901|2345|6789|0123|
5678|9012|3456|7890|
2345|6789|0123|4567|
9012|3456|7890|1234|
6789|012|3456|7890|
123|4567|8901|2345|
7890|1234|5678|9012|
4567|8901|2345|6789|
1234|5678|9012|3456|
8901|2345|6789|0123|
5678|901|2345|6789|
1234|5678|9012|3456|
8901|2345|6789|0123|
5678|9012|3456|7890|
2345|6789|0123|4567|
9012|3456|7890|1234|
6789|0123|4567|890|
2345|6789|0123|4567|
9012|3456|7890|1234|
6789|0123|4567|8901|
3456|7890|1234|5678|
01|2345|6789|0123|
5678|9012|3456|7890|
2345|6789|0123|4567|
9012|3456|7890|1234|
6789|0123|4567|8901|
3456|7890|1234|5678|
0123|4567|890||
Nie prosze o gotowe rozwiazanie, ale wskazowke do mojego podejscia, lub propozycje podejscia innego.
Z gory dzieki za odpowiedz!