[c++] Virus Alert!
Ostatnio zmodyfikowano 2015-04-06 12:59
C-Objective Temat założony przez niniejszego użytkownika |
[c++] Virus Alert! » 2015-04-02 14:15:35 Witam! Mam dręczącą sytuację od Kasperskiego, o tym kodzie, skompilowanym za pomocą mingw (binarki to niby jakiśtam generic cośtam), co więcej program nie działa (wpisanie "2 + 3" nie działa). Kod: #include <iostream> #include <fstream> #include <string>
void olog( char * text ); void snln(); using namespace std;
void olog( char * text ) { cout << text; fstream log; log.open( "log.glog", ios::app ); log << text; log.close(); } void snln() { cout << endl; fstream log; log.open( "log.glog", ios::app ); log << endl; log.close(); }
int main( int argc, char ** argv ) { int operation[ 2 ]; char * znak; system( "CLS" ); olog( "Calculator v 0.1 SNAPSHOT" ); snln(); olog( "by C-Objective." ); snln(); parse: olog( "MATH>> " ); cin >> operation[ 0 ] >> znak >> operation[ 1 ]; fstream log; log.open( "log.glog", ios::app ); log << operation[ 0 ] << " " << znak << " " << operation[ 1 ] << " = "; log.close(); if( znak == "+" ) { log << operation[ 0 ] + operation[ 1 ]; cout << endl; cout << operation[ 0 ] + operation[ 1 ]; log << endl; } else if( znak == "-" ) { log << operation[ 0 ] - operation[ 1 ]; cout << endl; cout << operation[ 0 ] - operation[ 1 ]; log << endl; } else if( znak == "*" ) { log << operation[ 0 ] * operation[ 1 ]; cout << endl; cout << operation[ 0 ] * operation[ 1 ]; log << endl; } else if( znak == "/" ) { log << operation[ 0 ] / operation[ 1 ]; cout << endl; cout << operation[ 0 ] / operation[ 1 ]; log << endl; } else { cout << "[number] [+ OR - OR * OR /] [number2]" << endl; } return 0; }
|
|
Fireho |
» 2015-04-02 14:21:07 Nie rezerwujesz żadnej pamięci dla char * znak , a więc wskazuje on w jakieś losowe miejsce, std::cin próbuje do tego losowego miejsca zapisać i masz błąd ochrony pamięci. Jeśli chcesz pobrać ciąg znaków, zamień go na statyczną tablicę lub przydziel pamięć za pomocą new[] . Jeśli chcesz pobrać jeden znak, zamień go na zwykły char znak . |
|
C-Objective Temat założony przez niniejszego użytkownika |
» 2015-04-02 14:29:49 long long argument = new long long; Dobrze? |
|
RazzorFlame |
» 2015-04-02 16:33:20 Ziom, skończ używać C-Stringów bo masz dużo lepsze stringi z C++. |
|
C-Objective Temat założony przez niniejszego użytkownika |
» 2015-04-02 16:57:15 Ale z C-Stringami jest troszkę lepiej bo można robić takie coś: 1. char * zmienna; if( zmienna == "cośtam" ) cout << "OK!" << endl;
a takie coś: string zmienna; if( zmienna == "cośtam" ) cout << "OK!" << endl;
wywala mi błąd. 2. Potrzebny jest nagłówek (#include <string>) 3.C Stringi narazie dla mnie są wygodniejsze |
|
RazzorFlame |
» 2015-04-02 17:21:42 a takie coś:
string zmienna; if( zmienna == "cośtam" ) cout << "OK!" << endl;
wywala mi błąd.
|
Chyba żartujesz. Jaki błąd Ci wywala? Co z tego, że potrzeba nagłówka <string>? |
|
NopeDotAvi |
» 2015-04-02 17:22:58 piszesz w c++, więc używaj std::string , nie rób z siebie samobójcy. |
|
michal11 |
» 2015-04-02 17:24:47 char * zmienna; if( zmienna == "cośtam" ) cout << "OK!" << endl;
Jeżeli myślisz, ze tak porównujesz c-stringi to jesteś w błędzie, od tego służy funckja strcmp(). |
|
« 1 » 2 3 |