• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z zapisywaniem do pliku c++

Object Storage Arubacloud
0 głosów
166 wizyt
pytanie zadane 29 maja 2020 w C i C++ przez rel Początkujący (340 p.)

Witam, moim zadaniem jest stworzenie pliku zapisującego cyfry z tablicy do pliku .txt. W tym celu posługiwałem się fopen i fwrite. Niestety nie wiem co zrobiłem źle, ale program zapisuje do pliku losowe znaki zamiast cyfr. Czy mógłby ktoś wytłumaczyć z czego to wynika?

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
FILE* plik;

void tablicadopliku(float* tab, int rozmiar)
{
   plik = fopen("dane.txt", "w");
   fwrite(tab, 4, rozmiar, plik);
   fclose(plik);
}
int main()
{
	float tablica[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	float* wskaz;
	wskaz = &tablica[0];
	tablicadopliku(wskaz, 10);
}

Byłbym wdzięczny za wytłumaczenie.

2 odpowiedzi

+2 głosów
odpowiedź 29 maja 2020 przez Oscar Nałogowiec (29,320 p.)
wybrane 30 maja 2020 przez rel
 
Najlepsza
Zapisujesz dane binarnie (fwrite bezpośrednio z tablicy float), więc raczej nie spodziewaj się tam tekstu.

Zamiast fwrite użyj fprintf. Oczywiście reszta też powinna być odpowiednio zmieniona.
0 głosów
odpowiedź 29 maja 2020 przez Majster6918 Gaduła (4,030 p.)

a nie lepiej taki kod? Kod napisany od ręki, jak jest źle gdzieś jakiś nawias to tyle chyba poprawić potrafisz

#include<iostream>
#include<fstream>
usign namespace std;
int mian()
{
string Nazwa_pliku = "Save.txt"
if(!(fstream(Nazwa_pliku).good() == true)) // plik nie istnieje
{
ofstream(Nazwa_pliku); // tworzymy plik
}
else // jeżeli plik już istnieje 
{
fstream plik(Nazwa_pliku)//Otwieramy plik
int x = 10;//Jakaś zmienna
x>>plik; // "wkładamy" zmianną do pliku
}
}

ps: jeżeli chcesz jakąś tablicę wsadzić do pliku to użyj pętli for 

static int x[10];

for(int i = 0; i<=10; i++)
x[i]>>plik

 

komentarz 29 maja 2020 przez rel Początkujący (340 p.)
Też rozwiązałem to tym sposobem ale mój nauczyciel uparł się na FILE i dlatego głupio się z tym męczę
komentarz 30 maja 2020 przez j23 Mędrzec (194,920 p.)

@Majster6918, zanim wkleisz jakiś kod sprawdź go najpierw:

fstream plik
...

x >> plik; 

Jeśli już, to plik >> x;, ale Ty tam piszesz o wstawianiu czegoś do pliku, więc powinno być plik << x;

if(!(fstream(Nazwa_pliku).good() == true)) // plik nie istnieje
{
ofstream(Nazwa_pliku); // tworzymy plik
}

To jest kompletnie zbędne, wystarczy stworzyć strumień typu std::ofstream - plik się stworzy, jeśli go nie będzie.

komentarz 30 maja 2020 przez Majster6918 Gaduła (4,030 p.)

Kod napisany od ręki

Czytaj dokładnie geniuszu zakuty  

jeżeli zrobisz ofstream gdy plik istnieje, to plik się wyczyści 

sprawdź sobie 

komentarz 30 maja 2020 przez j23 Mędrzec (194,920 p.)

Czytaj dokładnie geniuszu zakuty

Więcej pokory, młody człowieku.

(...) to plik się wyczyści

To nie jest problem, bo OP ma jedynie zapisać ciąg liczb pliku. I tyle.

 

komentarz 30 maja 2020 przez Majster6918 Gaduła (4,030 p.)
xD?!

Podobne pytania

–1 głos
1 odpowiedź 137 wizyt
pytanie zadane 1 marca 2016 w C i C++ przez lilkaczynski Początkujący (450 p.)
0 głosów
2 odpowiedzi 332 wizyt
pytanie zadane 14 października 2020 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
2 odpowiedzi 335 wizyt

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...