Ejemplo n.º 1
0
void ucitajPPM(slika* sl, char* datoteka) {
  FILE *fin;
  char line[256];
  int slikaX, slikaY, imax, ix, iy, i, ib;
  GLubyte *pixmap;

  if(!(fin = fopen(datoteka, "r"))) greska("ne mogu otvoriti datoteku!");
  fgets(line, 256, fin); if(strcmp(line, "P3\n")) greska("nije PPM format!");
  fgets(line, 256, fin); if(line[0] != '#') greska("ocekujemo komentar!");
  fscanf(fin, "%d%d", &slikaX, &slikaY);
  printf("dimX = %d   dimY = %d\n", slikaX, slikaY);
  fscanf(fin, "%d", &imax); if(imax != 255) greska("ocekujemo imax = 255!");

  pixmap = (GLubyte *)malloc(slikaY * slikaX * 3 * sizeof(GLubyte));

  for(iy = 0; iy < slikaY; iy++)  
    for(ix = 0; ix < slikaX; ix++)
      for(i = 0; i < 3; i++) {
        fscanf(fin, "%d", &ib);
        pixmap[((slikaY - 1 - iy) * slikaX + ix) * 3 + i] = (GLubyte)ib;
      } 
  fclose(fin);

  sl->dimX = slikaX; sl->dimY = slikaY;
  sl->pixmap = pixmap;
} // ucitajPPM
Ejemplo n.º 2
0
int main(int argc, char *argv[])
{
  char linija[MAKS_LINIJA];
  FILE * izlaz;
  int ispisi_v = 0, ispisi_m = 0;
  
  if (argc > 2) 
    greska("Greska: neispravan poziv.\n");

  if (argc == 1)
    ispisi_v = ispisi_m = 1;
  else 
  {
    /* Funkcija strcasecmp poredi niske ignorisuci razliku izmedju
       malih i velikih slova. */
    if (strcasecmp(argv[1], "-v") == 0)
      ispisi_v = 1;
    else if (strcasecmp(argv[1], "-m") == 0)
      ispisi_m = 1;
    else 
      greska("Greska: neispravna opcija.\n");
  }

  izlaz = fopen("izlaz.txt", "w");
  if (izlaz == NULL) 
    greska("Greska: neuspesno otvaranje izlazne datoteke.\n");

  while (fgets(linija, MAKS_LINIJA, stdin) != NULL) 
  {
    if ((ispisi_m && islower(linija[0])) || 
        (ispisi_v && isupper(linija[0])) || 
        (ispisi_m && ispisi_v))
      fputs(linija, izlaz);
  }

  /* Zatvara se datoteka. */ 
  fclose(izlaz);

  return 0;
}