Witam.
Mam problem z prostym programem mającym za zadanie sczytać wszystkie znaki z pliku .txt, a następnie wyświetlić ilość znaków podanych przez użytkownika.
Przed rozpoczęciem pisania metody LiczZnaki odpaliłem program i zauważyłem, że "wywala" się on za każdym dojściem do funkcji system("PAUSE"), umieszczonej za pętlą while(PlikWejsciowy.good()), (którą na wszelki wypadek zaznaczyłem w kodzie) gdziekolwiek ową funkcję system("PAUSE"), umieszczę... Czy możliwe jest, by program/system/aplikacja/program nie rozumiał, bądź kłócił się z tą funkcją, czy też to ja tak namieszałem? Co mogłem zrobić źle, w pętli pobierania znaków z pliku do tablicy, jeśli działa ona poprawnie (na dowód umieściłem niżej pętlę wyswietlającą znaki z tablicy *TablicaZnakow_Plik), a jedynie "nie pozwala" na użycie po niej funkcji system()?
Niżej zamieszczam mój kod programu, na wszelki wypadek, gdyby okazało się to jednak moją winą.
//Biblioteki.h:
#ifndef BIBLIOTEKI_H
#define BIBLIOTEKI_H
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif
//Plik.h:
#pragma once
#include "Biblioteki.h"
class Plik
{
private:
std::fstream PlikWejsciowy;
int LiczbaZnakow;
int Argument;
char *BuforZnakowy;
char *TablicaZnakow_Plik;
public:
Plik(void);
~Plik(void);
void OtworzPlik(char *NazwaPliku);
int LiczZnaki(char *Lancuch);
};
//Plik.cpp:
#include "Plik.h"
#include "Biblioteki.h"
void Plik::OtworzPlik(char *NazwaPliku )
{
using namespace std;
strcat(NazwaPliku, ".txt");
cout<<NazwaPliku;
LiczbaZnakow = 0;
system("pause");
TablicaZnakow_Plik = (char*)malloc(sizeof(char));
PlikWejsciowy.open(NazwaPliku, ios_base::in);
if(!PlikWejsciowy.is_open())
cout<<"Nie znaleziono pliku! \nUpewnij się, że podana nazwa jest prawidłowa!"<<endl;
else
{
cout<<"Otwarto plik o nazwie: "<<NazwaPliku<<"\n Rozpoczęto liczenie..."<<endl;
while(PlikWejsciowy.good())
{
TablicaZnakow_Plik[LiczbaZnakow] = PlikWejsciowy.get();
LiczbaZnakow++;
cout<<"Pobrano znak z pliku!\n";
}
for(int i=0; i<LiczbaZnakow; i++)
cout<<TablicaZnakow_Plik[i];
}
}
Plik::Plik(void)
{
}
Plik::~Plik(void)
{
std::cout<<"Zamykanie pliku!"<<std::endl;
}
/*int Plik::LiczZnaki(char *Lancuch)
{
}*/
//PlikWykonawczy.cpp:
#include "Biblioteki.h"
#include "Plik.h"
using namespace std;
int main()
{
char *NazwaPliku;
Plik Plik;
NazwaPliku = (char*)malloc(sizeof(char));
char *Fraza;
Fraza = (char*)malloc(sizeof(char));
int LiczbaZnakow=0;
cout<<"Podaj nazwę pliku: ";
cin>>NazwaPliku;
cout<<"\n Wpisz szukaną i zliczaną frazę: ";
cin>>Fraza;
cout<<"\n";
Plik.OtworzPlik(NazwaPliku);
system("PAUSE");
return 0;
}
Pragnę zaznaczyć, że z samym C++ jestem początkującym, więc z tego tytułu proszę o wyrozumiałość :P