Advertisement
Guest User

Czytanie z pliku

a guest
May 25th, 2015
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h> //Biblioteka umozliwiajaca korzystanie z lancuchów znakow.
  3.  
  4. void zamien( int a, int b ) //Funkcja zamien.
  5. {
  6.     int bufor=a;
  7.     a=b;
  8.     b=bufor;
  9. }
  10.  
  11. int main()
  12. {
  13.     FILE *plik1,*plik2;
  14.     char nazwa[32]; //Tablice charow przechowujace nazwy plikow.
  15.     char nazwa2[32];
  16.     char * kropka;
  17.  
  18.     printf("Podaj nazwe pliku z rozszerzeniem .txt: ");
  19.     scanf("%s", &nazwa);
  20.     //Utworzenie pliku wynikowego xxx_mod.txt :
  21.     kropka = strchr( nazwa, '.' ); //strchr zwraca wskaznik do pierwszego napotkania znaku '.'.
  22.     strncpy(nazwa2,nazwa,kropka-nazwa); //strncpy kopiuje tekst z pierwszej tablciy znakow do drugiej (z nazwa do nazwa2).
  23.     nazwa2[kropka-nazwa]='\0'; //Koniec tablicy charow  z nazwa pliku "xxx_mod.txt" ustawiam w miejscu wystapienia znaku '.'.
  24.     strcat(nazwa2,"_mod.txt"); //strcat skleja wydzielona czesc przed zniakiem '.' z "_mod.txt".
  25.  
  26.     plik1 = fopen(nazwa,"r"); //Otwarcie pliku Ÿród³owego w trybie odczytu.
  27.     if (plik1 == NULL)
  28.     {
  29.         printf("Blad otwarcia pliku!\n");
  30.         return 1;
  31.     }
  32.     plik2 = fopen(nazwa2,"w"); //Otwarcie pliku wynikowego w trybie zapisu.
  33.     if (plik2 == NULL)
  34.     {
  35.         printf("Blad otwarcia pliku!\n");
  36.         return 1;
  37.     }
  38.     int i=0, dl;
  39.     char wiersz[500],lchar[50];
  40.     float liczba[50];
  41.     while(!feof(plik1)) //Sprawdza do konca pliku i zapisuje cale wiersze, potem z calego wiersza zapisuje ka¿de liczby w charze i na koniec konwertuje tablice charow do float.
  42.     {
  43.         fgets(wiersz,500,plik1); //Funkcja stream czyta kolejne znaki ze strumienia plik1 i umieszcza je w tablicy znakowej "wiersz".
  44.         dl=strlen(wiersz);
  45.         int j=0;
  46.         int n=0;
  47.         for (i=0; i<dl; i++)
  48.         {
  49.             if (wiersz[i]==' ')
  50.             {
  51.                 if (wiersz[i+1]==' ') // Jesli napotka na spacje, ma nadal analizowac plik tekstowy.
  52.                     continue;
  53.                 else
  54.                 {
  55.                     int k=0;
  56.                     for (j; j<=i; j++)
  57.                     {
  58.                         lchar[k]=wiersz[j]; //Zapis liczb do tablicy znakowej char.
  59.                         k++;
  60.                     }
  61.                     liczba[n]=atof(&lchar); //atof - zwraca wartosc liczby w postaci zmiennoprzecinkowej (double).
  62.                     n++;
  63.                 }
  64.             }
  65.  
  66.         }
  67.         float min=liczba[0], max=liczba[0];
  68.         for (i=1; i<n; i++)
  69.         {
  70.             if (min>liczba[i])
  71.             {
  72.                 zamien(min,liczba[i]); //Wywo³anie funkcji zamien.
  73.             }
  74.             if (max<liczba[i])
  75.             {
  76.                 zamien(min,liczba[i]);
  77.             }
  78.         }
  79.         fprintf(plik2,"n= %d, min= %f, max= %f\n",n,min,max);
  80.     }
  81.     fclose(plik2); //Zamykam plik zrodlowy.
  82.     fclose(plik1); //Zamykam plik wynikowy.
  83.     printf("\n\nDane wynikowe - xxx_mod.txt, xxx to nazwa pliku zrodlowego bez rozszerzenia.\n\n\n");
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement