Опять я со своим говно-кодом.
Короче, задача такова - сделать калькулятор, который может выводить ответ в двух шаблоннах:
1)a+b=c 
2)с
Должно это происходить так, в терминале линукса запускаем программу и добавляем ключ в зависимости от желаемого шаблонна решения (./a.out 3+3 a например).
Я рассчитывал сделать так, чтобы программа запускалась лишь с ключом (./a.out a), а дальше уже начинался ввод данных через scanf и расчеты, на это код и написал:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h> 
int main()
{
int l, a, b, c;
l=getchar;
char k;
    switch(l){
    	case 'a':	
		printf ("Input task: ");
		scanf ("%d%c%d", &a, &k, &b);
		if (k='+') {
		c=a+b; 
		printf ("%d%c%d = %d", &a, &k, &b, &c);
	    }
		else if (k='-') {
		c=a-b; 
		printf ("%d%c%d = %d", &a, &k, &b, &c);
	    }
		else if (k='*') {
		c=a*b; 
		printf ("%d%c%d = %d", &a, &k, &b, &c);
	    }
		else if (k='/') {
			if (b=0) {
				printf ("Error.");
				exit (1);
			}
		c=a/b; 
		printf ("%d%c%d = %d", &a, &k, &b, &c); 
		}
		case 'b':
		printf ("Input task: ");
		scanf ("%d%c%d", &a, &k, &b);
		if (k='+') {
		c=a+b; 
		printf ("%d", &c);
	    }
		else if (k='-') {
		c=a-b; 
		printf ("%d", &c);
	    }
		else if (k='*') {
		c=a*b; 
		printf ("%d", &c);
	    }
		else if (k='/') {
		if (b=0) {
			printf ("Error.");
			exit (1);
			}
		c=a/b; 
		printf ("%d", &c); 
        }
    }
}
Думаю, понятно, почему мой обоссанский код не работает. 
Я не могу настроить эти самые кейсы, а точнее вызов к их исполнению. 
Для этого нам сказали юзать getopt функцию. (хотя возможно с применением getopt нужно обязательно исполнять программу по виду ./a.out a+b o)
Если кто знает, как это написать, скиньте, пожалуйста.