Wczytanie Pliku Binarnego

luk_asz

Nowicjusz
Dołączył
20 Grudzień 2005
Posty
3
Punkty reakcji
0
Hej

Mam taki plik textowy 0001100011
jak go wczytac do tablicy zebym tam mial tam takie wartosci 0 i 1 ??

doszedlem do tego ale mam w tab liczby 48 i 49 :/

plik=fopen();
[tab,count]=fread(plik);

i jak to pozniej zapisac do innego pliku


Help ludki :)
 

Tux

a co to jest ranga?
Dołączył
1 Sierpień 2005
Posty
633
Punkty reakcji
0
Wiek
41
Miasto
Tarnów (no - prawie)
Nie możesz znaków wczytanych z pliku traktować tak samo jak cyfry. Znaki '0' i '1' są w rzeczywistości liczbami 48 i 49 ponieważ takie są ich kody ASCII. Aby np '0' skonwertować do liczby 0 musisz użyć funkcji atoi lub napisać swoją np tak:

Kod:
int char2int(char znak)
{
  return znak-48;
}

a teraz wczytujesz po jednym znaku z pliku konwertujesz go na char i zapisujesz w odpowiednim miejscu w tablicy. Żeby zapisać znak z tablicy char do pliku musisz użyć funkcji itoa lub napisać własną

Kod:
char int2char(int liczba)
{
  return liczba+48;
}

A Funkcja main może wyglądać na przykład tak:

Kod:
int main(int argc, char *argv[])
{
  FILE *input, *output;
  int liczby[20];
  char znak_in, znak_out;
  int i, j;
  /* WCZYTYWANIE Z PLIKU DI TABLICY INT */
  input=fopen("input.txt","r");
  i=0;
  do
  {
	  znak_in=fgetc(input);
	  if(znak_in!=EOF)
	  {
		  liczby[i]=char2int(znak_in);
		  i++;
	  }	
  }
  while(znak_in!=EOF);
  

  /* ZAPISYWANIE DO PLIKU Z TABLICY INT*/
  
  output=fopen("output.txt","w");
  
  for(j=0;j<i;j++)
  {
	  znak_out=int2char(liczby[j]);
	  fputc(znak_out,output);
  }	
  
  fclose(input);
  fclose(output);
  return 0;
}

Aha funkcje atoi i itoa znajdują się w bibliotece stdio.h
Pozdrawiam.
 
Do góry