Witam chciałem zrobić program który pobiera 2 liczby typu integer i znak podczas odpalania samego programu np. przez Linux'a (gcc nazwa.c) ./a.out 270 270 &
Czy jest takie coś w ogóle możliwe przez funkcje main czy należy to zrobić inaczej ?
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Postów:7
0

_13th_Dragon
Może zdecyduj się C/C++ czy C#

- Rejestracja:około 10 lat
- Ostatnio:4 miesiące
- Lokalizacja:Podkarpacie
- Postów:448
0
http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html o to ci chodzilo?
I dlaczego to ma tag c#, a jest w dziale c/ c++ O.o
edytowany 1x, ostatnio: Pixello
chciałbym aby te zmienne co pobiorę były typu int bym mógł nimi operować normalnie.

https://pl.wikibooks.org/wiki/C/atoi ban na google?
nie do konica o to mi chodzi bo "Funkcja atoi() kończy wczytywać znaki w momencie napotkania jakiegokolwiek znaku, który nie jest cyfrą." a ja nie chce podawać żadnego znaku po liczbie tylko osobno znak.

DareDevil010, jak nie podasz żadnego znaku po to i tak dopisze się znak
\0
0
Przy takiej deklaracji main
a:
int main(int argc char *argv)
argc
- liczba argumentów, argv
- kolejne argumenty z linii poleceń (przy czym argv[0]
to ścieżka samej aplikacji, a dopiero argv[1]
to pierwszy argument).
Wykorzystaj tę wiedzę oraz atoi
;)
edytowany 1x, ostatnio: Patryk27

W tagach C#

@_13th_Dragon to ty nie wiesz, że to jest to samo, tylko się jakimś śmiesznym znaczkiem roźni :P?

O je, znak # to dwa plusiki które najechały jeden na drugi. ;P

@_13th_Dragon: a w dziale C/C++ plus w poście jest wzmianka GCC.

Ta i @Pixello mnie wszystko wyjaśnił, trochę wyżej ;P
0
DareDevil010 napisał(a):
Witam chciałem zrobić program który pobiera 2 liczby typu integer i znak podczas odpalania samego programu np. przez Linux'a (gcc nazwa.c) ./a.out 270 270 &
Czy jest takie coś w ogóle możliwe przez funkcje main czy należy to zrobić inaczej ?
./a.out 270 270 &
Na linuchu znak & na końcu polecenia, odpali program w tle ;)

- Rejestracja:ponad 19 lat
- Ostatnio:2 miesiące
0
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int a,b,c;
if(argc<=3) return fprintf(stderr,"Przykład użycia:\n./a.out 270 270 &");
a=atoi(argv[1]);
c=argv[2][0];
b=atoi(argv[3]);
switch(c)
{
case '+': printf("%d %c %d = %d",a,c,b,a+b); break;
case '-': printf("%d %c %d = %d",a,c,b,a-b); break;
case '*': printf("%d %c %d = %d",a,c,b,a*b); break;
case '/': printf("%d %c %d = %d",a,c,b,a/b); break;
case '%': printf("%d %c %d = %d",a,c,b,a%b); break;
default: return fprintf(stderr,"%c - nieznana operacja",c)>0;
}
return 0;
}

Zadziała z dokładnością do tego, że nie które znaki mogą być znakami sterującymi na danej konsoli :)

Zawsze możesz podać: 100 "%" 100 pod linuksem poprzez łamaną.