Опять я со своим говно-кодом.
Короче, задача такова - сделать калькулятор, который может выводить ответ в двух шаблоннах:
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)
Если кто знает, как это написать, скиньте, пожалуйста.