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

Potrzebuje porady, mianowicie dlaczego mam ciągle błąd "[Error] expected primary-expression before 'char' " ??

Object Storage Arubacloud
0 głosów
1,502 wizyt
pytanie zadane 22 lutego 2019 w C i C++ przez patryk241 Użytkownik (700 p.)

Mam zadanie w którym muszę wczytać po 3 znaki z pliku ( ogólnie jest ich 9 w jednej lini) i wpisać je do innego pliku ale najbardziej chodzi mi o to czemu w aktualnym etapie, używając metody podanej nam przez wykładowce, wyskakuje ciągle ten błąd [Error] expected primary-expression before 'char' . Z dalszą częścią zadania jakoś sobie poradzę ale potrzebuje porady co z tym zrobić. 

#include <iostream>
#include <string>
#include <fstream>
using namespace std;


string liczby;
int main()
{
	fstream dane;
	dane.open("3.txt",ios::in);
	if(dane.good()==false)
dane.read(char* liczby, streamsize 3);
cout<<dane<<endl;

 

}

 

 

2 odpowiedzi

0 głosów
odpowiedź 22 lutego 2019 przez Bondrusiek Maniak (61,410 p.)
wybrane 22 lutego 2019 przez patryk241
 
Najlepsza

Witam,

po pierwsze staraj się poprawnie formatować kod. Łatwiej będzie analizować kod i wyszukiwać błędy. Co do meritum to tak na szybko.

#include <iostream>
#include <fstream>
using namespace std;



int main()
{
    char *tab = new char[3]; // alokujesz tablice char na dane z pliku.  W tym wypadku jest to trzy 
    fstream dane;
    dane.open("3.txt",ios::in);
    if(!dane.good()==false){// Jeśli plik zostanie poprawnie otworzony to warunek jest spelniony.
        dane.read( tab,  3); // Czyta 3 wartości
    }//uzywaj klamr wtedy łatwiej jest uniknąć błędów


    for(int i = 0; i < 3; i++){
        cout<<tab<<endl; // wyświetlenie tablicy
    }

    delete[] tab; // zwolnienie pamięci

    dane.close(); // zamkniecie pliku


}

Więcej info

komentarz 22 lutego 2019 przez patryk241 Użytkownik (700 p.)

Właśnie zrobiłem coś podobnego i odczytuje te pliki niby ładując je do bufora ale nie za bardzo chce mi to się zapisać do innego pliku.

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int i;

int main()
{
	
    fstream odczyt;
    odczyt.open("3.txt",ios::in);
    if(odczyt.good()==false)
    {
    	cout<<"Plik nie istnieje";
	}
	for(i=0;i<3;i++)
	{

     char znaki[3];
     odczyt.read(znaki, 3);
     cout<<znaki<<endl;
     fstream zapis;
     zapis.open("bufor.txt", ios::in);
     zapis.write(znaki, 3);
     
    
     
}
     odczyt.close();
    
}

 

komentarz 22 lutego 2019 przez Bondrusiek Maniak (61,410 p.)

Usuń pętle for

...
     char znaki[3];
     odczyt.read(znaki, 3);
     for(int id =0; id < 3; ++id)
     {
         cout<<znaki[id]<<endl;
     }
     fstream zapis;
     zapis.open("bufor.txt", ios::out);
     zapis.write(znaki, 3);
...

 

komentarz 22 lutego 2019 przez patryk241 Użytkownik (700 p.)
Super, dzięki wielki wszystko teraz śmiga :)
0 głosów
odpowiedź 22 lutego 2019 przez Asertywny Mądrala (5,430 p.)
"streamsize 3" - co to takiego?

Dlaczego jest tam to char * przed liczby w wywołaniu dane.read()?
komentarz 22 lutego 2019 przez patryk241 Użytkownik (700 p.)
Dostaliśmy coś takiego od wykładowcy
nazwaStrumienia.read(bufor, rozmiarBufora);
// odczyt określonej ilości znaków i zapisanie ich do bufora
// char* bufor
// streamsize rozmiarBufora
komentarz 22 lutego 2019 przez Asertywny Mądrala (5,430 p.)
read(liczby, streamsize)
przy czym zdefiniuj streamsize gdzies wyzej. Standardowe bufory to 512 lub 1024.

Podobne pytania

0 głosów
1 odpowiedź 3,673 wizyt
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 8 maja 2023 w C i C++ przez Pati Nowicjusz (150 p.)
0 głosów
1 odpowiedź 1,367 wizyt

92,702 zapytań

141,615 odpowiedzi

320,180 komentarzy

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

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!

...