witam!
Na psiałem program który z pliku wczytuje tekst i szukam w nim znaków np ' ! ' lub ' @ ' i wszytko działa dobrze, ale czasem jak dam inny przykład coś się miesza np:
sa$ 2 $
%sa %4% %
!!!s!!!a!!! 10!!!!
5@@@ 5 @@
Gdy wpisuje $ i % dobrze mi wyświetla ze są 2-$ i 4-%, a gdy wpisuje ! podaje 13-! i 6-@.
Mam pytanie dlaczego ???
KOD: [ program jest brzydko napisany bo go wyciąłem z innego dłuższego programu i dodałem tylko żeby działał, żeby ktoś mógł sobie sprawdzić.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int ile_z=0;
char znaczek;
char znak=' ';
char dokument[255];
char menu;
string tekst;
do
{
cout <<"podaj 1- wprowadz dane 2-szukaj znaku k-koniec : ";cin>>menu;
switch (menu)
{
case '1':
{
cout <<"podaj nazwe pliku tekstowego z ktorego ma byc wczytany tekst: "; cin>>dokument;
cout <<"\nTekst ktory byl w pliku tekstowym: "<<endl<<endl;
ifstream mojplik;
mojplik.open(dokument);
if(mojplik.is_open())
{
while (mojplik.good())
{
getline(mojplik, tekst);
cout <<tekst<<endl;
}
mojplik.close();
}
else
{cout <<"Nie mozna otworzyc pliku do czytania"<<endl;
return 0;
}
break;
}
case '2':
{
ile_z=0;
cout <<"jaki znak ma byc suzkany: "; cin>>znaczek;
ifstream mojplik(dokument);
while (mojplik.eof()==false)
{
mojplik >> znak;
if(znak == znaczek)
ile_z++;
}
mojplik.close();
cout << "Znak '" << znaczek << "' wystepuje w pliku: " <<dokument<<", "<< ile_z << " raz(y).\n";
}
break;
default :
{
if (menu!='k')
{
cout<<endl<<" nie ma takiej opcji!"<<endl;
}
break;
}}
}
while (menu!='k');
return 0;
}