Wpis z mikrobloga

#programowanie #cpp Mirki, potrzebuję pomocy. Wyskakuje mi błąd :"ISO C++ forbids comparison between pointer and integer" w kodzie (podaję tylko istotny fragment):

int main(int argc, char * argv[])

{

if(argv[2] == '+') Kalk.dodaj(); //error

else if(argv[2] == '-') Kalk.odejmij(); //error

else if(argv[2] == '*') Kalk.pomnoz(); //error

}

ja wiem na czym ten błąd polega, ale w googlach odnośnie tego errora rozwiązania dotyczą porównywania z const char, a u mnie strcmp nie działa. Jak mogę rozwiązać ten problem?
  • 21
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@p3sman: tak.

musisz zrobić tak jak napisałem, czyli jak doprecyzował @NiecoCiekawszyNick ogólnie argv[x] to jest jakiś ciąg znaków, to że podajesz jeden nie zmienia tego, czyli argv[x] możesz przypisać do char *argument i wtedy żeby dostać pierwszy znak robisz *argument albo argument[0] czyli jeśli chcesz sprawdzić co tam jest musisz w swoim kodzie napisać argv[2][0] albo *argv[2]
  • Odpowiedz
@p3sman: u mnie działa xD

tylko mnożenie mi się wywala ale mam jakieś przyćmienie umysłowe, bo nie mogę znaleźć przyczyny tego wywalenia.

znalazłem - program działa, po prostu * trzeba eskejpować w wierszu poleceń \*
  • Odpowiedz
@badasq: czytałem, że ludzie mają takie problemy na systemach 64-bitowych. Sprawdzę więc jutro sobie na uczelni. Jak byś znalazł przyczynę błędu z mnożeniem to będę wdzięczny ;)
  • Odpowiedz
@p3sman: nie ma błędu w mnożeniu, problemem był wiersz poleceń, gdzie * to uzupełnienie argumentów i trzeba wpisywać \*

odpal może cmd i z cmd odpal binarkę programu z odpowiednimi argumentami. System mam 64bitowy i wszystko pięknie działa.
  • Odpowiedz