Błąd w Kalkulatorze (C) prosze o wskazówke

0
 #include<stdio.h>
#include<iostream>
int minus(int a,int b)
{
	int roznicaa;
	roznicaa=a-b;
	return roznicaa;
}
int plus(int a,int b)
	{
		int dodawanie;
		dodawanie=a+b;
		return dodawanie;
}
int razy(int a,int b)
{
	int mnozenie;
	mnozenie=a*b;
	return mnozenie;
}
int podziel(int a,int b)
{
	int dzielenie;
	dzielenie=a/b;
	return dzielenie;
}
int reszta(int a,int b)
{
	int resztadziel;
	resztadziel=a%b;
	return resztadziel;
}
int main()
{
	int a,b;
	char znak[1];
	printf("Obsluguje znaki %-reszta z dzielenia\n *-razy\n odejmowania i dodawania\n / dzielenia\n");
	printf(" Podaj : znak / a / b\n");
	scanf("%s %d %d",&znak[1],&a,&b);
	switch (znak[1])
	{
	case '/': printf("Wynik dzielenia wynosi: %d",podziel(a,b));
				  break;
	case '*': printf("Wynik mnozenia wynosi: %d",razy(a,b));
				  break;
	case '%': printf("Reszta z dzielenia wynosi: %d",reszta(a,b));
				  break;
	case '+': printf("Wynik dodawania wynosi ; %d",plus(a,b));
				  break;
	case '-': printf("Wynik odejmowania wynosi : %d",minus(a,b));
				  break;
	default: printf("Nie potrafie oblczyc z takim znakiem");
		break;
	}
	
	system("PAUSE");
	return 0;
} 
2
  1. char znak[2];
  2. scanf("%s %d %d",znak,&a,&b);
  3. switch (znak[0]) lub switch(*znak)

powinno być jeszcze zabezpieczenie przed buffer overflowem (czyli jak ktoś zamiast 1 znaku poda troszkę więcej), ale już sobie odpuszcze wywody

0

Czyli przy wczytywaniu znaku nie potrzeba dawać &znak ?

Juz wszystko działa dziękuje za pomoc !

2

%s służy do wczytywania c-stringów. %c służy do wczytywania znaków. W przypadku stringów, nazwa tablicy jest wskaźnikiem na pierwszy element, więc nie trzeba jej podawać, w przypadku znaków, musisz podać adres do elementu więc używasz &.

"&znak[0]" jest jednoznaczne z samym "znak", a &znak[1] jest jednoznaczne z znak+1 i oznaczają kolejno wskaźnik na pierwszy element i wskaźnik na drugi element.

0

Jak rozumiem swoje dzieło robisz na Windowsie?
otóż - wyrażenie:
system("PAUSE");
może (raczej nie będzie) Ci działać na większości "linuxowych" kompilatorów. Mnie uczyli by się go wystrzegać - ale też kazali pisać absolutnie przenośne aplikacje :)

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