• 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++

VPS Starter Arubacloud
0 głosów
208 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,340 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 (195,220 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 (195,220 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ź 164 wizyt
pytanie zadane 1 marca 2016 w C i C++ przez lilkaczynski Początkujący (450 p.)
0 głosów
2 odpowiedzi 372 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 546 wizyt

93,020 zapytań

141,983 odpowiedzi

321,283 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...