[ Andrija91 @ 30.11.2009. 19:00 ] @
Code:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  char z;int niz[100],i=0,j;
  FILE *f;
  if((f=fopen("zad20.dat","r"))!=NULL)
  while(!feof(f))
  {
   i+=1;
   z=getc(f);
   printf("%d\n",(int)z);
  }
  for(j=1;j<=i;j++)
   printf("%d",niz[j]);
  system("PAUSE");    
  return 0;
}

U fajlu su upisani u jednom redu 12345678. Zbog cega mi posle konverzije char u int stampa brojeve 49,50,51...56. Znam da su to ascii kosdovi od tih brojeva ali zbog cega stampa njih a ne brojeve 123345678?

Takodje pokusao sam da citam po jedan znak iz fajla u int promenljivu ali nikako nisam uspeo?

[Ovu poruku je menjao X Files dana 30.11.2009. u 20:24 GMT+1]
[ X Files @ 30.11.2009. 19:30 ] @
Koju ces strategiju citanja koristiti zavisi pre svega od potreba. Ovde imas post u kome je jedna od ideja citanja cele linije (CITANJE DATOTEKE LINIJA PO LINIJA, ISPIS NA EKRAN, UPIS U DRUGU DATOTEKU)
http://www.elitesecurity.org/p2219727


Sto se tice tvog konkretnog pitanja, pri citanju karakter po karakter, oduzimanjem mozes dobiti ocekivani rezultat:
Umesto:
printf("%d\n",(int)z);
Stavi:
printf("%d\n",z-'0');

Sledeci logiku kojom si zapoceo tvoj program, uz izmenu koju sam ti naveo, verovatno ces imati i karekter 'viska', koji je zapravo karakter kraja datoteke. Zato je najbolje u petlji samo formirati niz, a ispis izmestiti van petlje i to jedan karakter manje od brojaca "i".
[ Andrija91 @ 30.11.2009. 19:56 ] @
Ok hvala! Znam kako da citam celu liniju znam da citam i po jedan karakter, samo ne znam kako da iscitavam po jedan znak i smestam u int, medjutim i ovo resenje je prihvatljivo!

Jos jedno pitanje:kako bi se iscitavao fajl da ima i brojeve i slova?
[ X Files @ 30.11.2009. 20:19 ] @
Stavi samo:
printf("%c\n",z);

To ce ispisivati odmah i brojeve i slova onako kako ocekujes.
[ Andrija91 @ 30.11.2009. 20:46 ] @
Nije problem u ispisivanju nego u smestanju sadrzaja fajla u odgovarajucu promenljivu,int,char.
[ X Files @ 30.11.2009. 20:58 ] @
Sve zavisi sta zelis konkretno da postignes programom. Pokazi konkretan problem, pa cemo ti reci sta je najoptimalnije.

Fajl moze biti proizvoljne velicine i obicno je suvisno praviti kopiju celog fajla u memoriji, smestanjem u neki niz char-ova.

Ipak, postoji vise nacina kako bi to postigao, a najjednostavnije je sa fread() funkcijom, sto je dato u primeru.

Code:

// Primer iz Borlandovog "C Runtime Library" helpa
#include <string.h>
#include <stdio.h>

int main(void)
{
   FILE *stream;
   char msg[] = "this is a test";
   char buf[20];

   if ((stream = fopen("DUMMY.FIL", "w+"))
       == NULL)
   {
      fprintf(stderr, "Cannot open output file.\n");
      return 1;
   }

   /* write some data to the file */
   fwrite(msg, strlen(msg)+1, 1, stream);

   /* seek to the beginning of the file */
   fseek(stream, SEEK_SET, 0);

   /* read the data and display it */

   fread(buf, strlen(msg)+1, 1, stream);
   printf("%s\n", buf);

   fclose(stream);
   return 0;
}


A mozes i (u skladu s tvojim primerom) da citas karakter po karakter i smestas u neki niz dovoljne velicine, inkrementirajuci brojac posle svakog pojedinacnog citanja. Velicinu niza mozes odrediti prethodnim citanjem velicine fajla i dinamicki ga kreirati.


Ono sto vidim je da te zbunjuje int i char u kontekstu citanja fajlova. Da ne detaljisem, po jeziku C, to su prakticno identicni tipovi podataka, jer se char realizuje preko inta, ali to je neka druga tema. Dovoljno je da imas char niz, a kasnije ga mozes transformisati u sta god zelis, pod uslovom da poznajes strukturu fajla.