Odczyt i zapis liczb z i do pliku

medium
2014-10-11 13:23
medium
0

Witam, kombinowałem nad programem który w C ma działać pod linuxa, wczytywać liczby z pliku txt, konwertować na rzymskie i zapisywać do innego pliku txt. Pomijając samą konwersje (której tu jeszcze nie ma :( ) coś mi się chyba zepsuło i nie chce zapisać do drugiego pliku.

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

int main ()
 {
   FILE *plik;
   FILE *plik2;
   int i=0;
   int liczby[i];
   int I=1, V=5, X=10, L=50, C=100, D=500, M=1000;
   plik = fopen("liczbyArabskie.txt", "r"); 

   if (plik == NULL)
   {
    printf("Otwarcie nieudane");
    exit(-1);
   }
   while (fscanf(plik, "%d") != EOF)
   {
   while(fscanf(plik,"%d",&liczby[i])!=" ")
    {
        i++;
    }
   }  
   plik2=fopen("liczbyRzymskie.txt","w");
   fprintf (plik2, "%s");
   i=1; 

   fclose(plik2);
   exit(0);
} 

Pozostało 580 znaków

2014-10-11 13:38

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

1

Wywal to i zacznij od nowa, ponieważ lista tego co tu jest źle znacznie przekracza rozmiar poprawnego kodu.
Nie magazynuj tych liczb, wczytałeś kolejną od razu ją do pliku wynikowego.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

medium
2014-10-11 14:11
medium
0

Yay, działa teraz :) Dzięki za podpowiedz. Jeszcze potrzeba tu implementacja konwersji na rzymskie, jakaś malutka pomoc?

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

int main ()
 {
   FILE *plik;
   FILE *plik2;
   int i=0;
   int n;
   int I=1, V=5, X=10, L=50, C=100, D=500, M=1000;
   plik = fopen("liczbyArabskie.txt", "r"); 
   plik2=fopen("liczbyRzymskie.txt","w");

   if (plik, plik2 == NULL)    
   {
    printf("Otwarcie nieudane");
    exit(-1);
   }
   while (feof(plik) == 0) 
   {
    fscanf (plik, "%d",&n);
    printf("%d ",n);
    fprintf(plik2,"%d ",n);
   }
   fclose(plik);
   fclose(plik2);
   exit(0);
}

Pozostało 580 znaków

2014-10-11 14:22

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

0

warunek if (plik, plik2 == NULL) jest niepoprawny, ma być: if((!plik)||(!plik2))
Konwersji na rzymskie ze dwie w ostatnim tygodniu na tym forum się przewinęło, grubo ponad dziesięć przez ostatni rok.
Szukanie w lewym górnym rogu.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-10-11 16:15
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 3 minuty temu

Lokalizacja: Tuchów

1

Jeśli dobrze zrozumiałem ten kod, to w pewnej sytuacji powodować będzie wyciek pamięci; Dokładniej chodzi o sytuację, gdy jeden plik zostanie otwarty, a drugi z jakiejś przyczyny nie - wtedy wychodzisz z programu, nie zamykając tego otwartego pliku; To by trzeba poprawić.


Po wyjściu za pomocą exit() wszytko się zamknie samo. - _13th_Dragon 2014-10-11 16:55

Pozostało 580 znaków

medium
2014-10-11 16:22
medium
0

taa pare kruczków sie znajdzie, nie ma pełnego zabezpiecznia, nie potrzebne mi jest to teraz, chodzi o idee, poprawnosc konwersji, wczytywania/zapisu

Poza tym, działa to w ten sposób, że ten drugi plik (liczbyrzymskie) tworzy się automatycznie, nie musi go nawet być :o

Może już istnieć i być otwartym przez inny program. - _13th_Dragon 2014-10-11 16:56

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0