Kopiowanie do pliku BINARNE

0

Witam, mam pewien problem, napisalem program silnia, ktory zapisuje n wartosci do pliku, wszystko ok no ale moja wykladowczyni wymaga aby program byl zapisywany binarnie. Ponizej wstawiam program ktory zapisuje normalnie do pliku.

01 #include <stdio.h>
02 #include <stdlib.h>
03
04 int silnia(int n);
05
06 int main()
07 {
08 FILE plik;
09 int n,i;
10 plik=fopen("silnia","w");
11 do
12 {
13 printf ("podaj liczbe ");
14 scanf ("%d",&n);
15 } while (n<0);
16 for (i=0;i<=n;i++)
17 {
18 fprintf (plik,"Silnia z %2d wynosi : %-12d\n",i,silnia(i));
19 }
20 fclose(plik);
21 system ("PAUSE");
22
23 }
24
25 int silnia (int n)
26 {
27 int i=1,wynik=1;
28 for (i;i<=n;i++)
29 {
30 wynik
=i;
31 }
32 return wynik;
33 }

Po mojej probie przerobienia tego wyglada to tak:

01 #include <stdio.h>
02 #include <stdlib.h>
03
04 int silnia(int n);
05
06 int main()
07 {
08 FILE *plik;
09 int n,i;
10 int *wsk;
11 plik=fopen("silnia","wb");
12 do
13 {
14 printf ("podaj liczbe ");
15 scanf ("%d",&n);
16 } while (n<0);
17 for (i=0;i<=n;i++)
18 {
19 int wsk=("Silnia z %2d wynosi : %-12d\n",i,silnia(i));
20 fwrite (wsk,sizeof(wsk),1,plik);
21 }
22 fclose(plik);
23 system ("PAUSE");
24
25 }
26
27 int silnia (int n)
28 {
29 int i=1,wynik=1;
30 for (i;i<=n;i++)
31 {
32 wynik
=i;
33 }
34 return wynik;
35 }

Aczkolwiek nie dziala, dlatego jakby ktos mogl to poprawic to bylbym wdzieczny, jutro mam zaliczenie no i raczej bedzie zadanie tego typu, mam na mysli zapisywanie binarne.

0

Użyj fwrite.

Co robi C# w tagach?

edit:
Tak patrzę na ten "zmodyfikowany" program i zastanawiam się co rozumiesz poprzez binarny? Tryb binarny otworzenia pliku, w którym nie są konwertowane znaki końca linii czy zapisanie liczb jedna po drugiej, a nie zapisanie ich dziesiętnej reprezentacji tekstowej?

0

c# bo to w jezyku c napisane, wiem ze fwrite i uzylem tego, jest to nawet pokazane no ale z tego co widze to jest to zle i jakbys mogl to sprobuj mnie poprawic albo nakierowac co robie zle, sorry ze bez polskich znakow no ale cos jest nie teges.

0

Tryb binarny no to jezeli otworzymy np poprzez notatnik to powinno to byc reprezentowane w kodach ASCII no a binarnie to jest zapisywane w blokach o okreslonej szerokosci, tylko kwestia taka ze nie wiem czy moze to byc robione w tego typu programie w ktorym ja to zrobilem.

0

Napisałeś C#, bo masz na myśli C? To logiczne.

Ah, widzę ten twój kod z fwrite.

int *wsk=("Silnia z %2d wynosi : %-12d\n",i,silnia(i));

Genialne. Tutaj za bardzo nie ma co poprawiać, bo ty C w ogóle nie znasz, a ten pierwszy kod napisał za ciebie nauczyciel.

0

Sam to napisalem przed chwila no ale powiem szczerze ze nie rozumiem zapisywania jako pliki binarne bo nie wyjasnila tego dobrze, wiem tylko tyle ze jest to zapisywane w blokach. wiem ze to co napisalem przy int *wsk nie jest poprawne bo to powinna byc jedna wartosc np int *wsk=&liczba no ale w tym przypadku wiem ze to nie bedzie, jezeli chodzi o zapisywanie struktur czy tez pojedynczych znakow typu program ktory wczytuje liczby wieksze od 0 i zapisuje do pliku binarne no to dziala bez zarzutu no ale jezeli chodzi o ten program jak go zapisac binarnie to powiem szczerze ze jestem ciemny dlatego prosze o pomoc.

0

#include <stdio.h>
#include<stdlib.h>
void czytaj ();
void main()
{
czytaj();
system ("PAUSE");
}
void czytaj ()
{
FILE *plik;
int liczba,i=0;
int * wsk = &liczba;
plik=fopen("liczby","wb");
while (printf("Podaj liczbe: "),(scanf("%d",&liczba)) && liczba>=0)
{
fwrite(wsk,sizeof(int),1,plik);
i++;
}
fclose(plik);
}

Tutaj Jest przykladowy program do zapisywania binarnego ktory dziala i sam go napisalem no ale jezeli chodzi o takie programy jak np ten z silnia to juz nie jestem w stanie tego zrobic wiec prosze o pomoc bo wydaje mi sie ze nie ma przy tym duzo roboty

1
kubik1992 napisał(a):

c# bo to w jezyku c napisane

To po kiego grzyba dałeś C# w tagach, skoro to C?

0

Przypadkowo.
Może ktoś to rozkminić czy nie bardzo??

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