* jako argument wywołania programu

0

Witam, mam następujący problem z swoim programem. Programem jest kalkulator który wczytuje działania jako argument jego wywołania. Wszystko działało sprawnie, ale testując go już napotkałem problem. Dla danych 2 2 *( i dowolnych innych z znakiem mnożenia *) program wczytał jako argument 2 2 a.out main.C ... (nazwy kolejnych plików) i próbował to przetwarzać, co jak można się domyślić nie było moim zamierzeniem i nie przyniosło zamierzonego celu...
Pracuję na serwerze diablo na PWR, kompilator gcc.
W treści zadania napisane jest że ma być * więc nie mogę pójść po linii najmniejszego oporu i zmienić na 'x'

[code]
if(argc>1)
{
for(int i=1; i<argc; i++)
{
process(&stack,argv[i], &memory);
}
}
[/code]
A funkcja process jest jednym dużym switch'em. Da się to jakoś naprawić?

1

Problem nie leży po stronie programu tylko interpretera z którego go uruchamiasz. Interpreter uznaje że * oznacza wszystkie pliki w danym katalogu po prostu ;]

0

Czy da się to jakoś obejść? Podobnie źle działa #

1

Możesz całe działanie objąć w ""

0

Wtedy program wczyta tylko pierwszą liczbę, bo czyta kolejne argv w pętli i potem ew atoi... Jak mi się będzie chciało to to poprawie . Ujęcie samego * w " " pomogło więc wielkie dzięki :)

edit
Pomaga też dopisanie dowolnego znaku zaraz po * np. *d (nie wiem tylko czy to nie traktować tego już jako błąd...)

0

Po co tak kombinować? Wczytaj wszystko jako jeden parametr.

0

Kalkulator jest w notacji odwróconej, tzn nie wpisujesz normalnie 2+2 tylko 2 2 +, gdyby wczytać jako 1 parametr wyszło by 22+

0

Nie jeśli obejmiesz wszystko w cudzysłów lub apostrofy (polecam to 2).

1 użytkowników online, w tym zalogowanych: 0, gości: 1