Я ограничил этот код сейчас только для того, чтобы выполнить некоторые базовые вычисления, такие как сложение и вычитание, чтобы получить представление о том, как работает getopt
.
Я пытаюсь достичь: ./a.out -a 20 20 -s 40 40
[результат = 40
и 0
]
Я новичок в C, поэтому, пожалуйста, дайте мне знать об ошибках в моем коде.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main(int argc, char *argv[]) {
FILE *file1 = fopen("Results.txt", "a");
char ch;
int res;
while ((ch = getopt(argc, argv, "a:s:")) != EOF)
switch (ch) {
case 'a':
res = add(atoi(optarg), atoi(argv[3]));
fprintf(file1, "%i\n", res);
break;
case 's':
res = subtract(atoi(optarg), atoi(argv[3]));
printf("%i \n", res);
fprintf(file1, "%i\n", res);
break;
default:
fprintf(stderr, "No such option");
return 1;
}
argc -= optind;
argv += optind;
printf("Opind = %i, argc = %i, argv = %i \n", optind, argc, argv);
fprintf(file1, "\nWritten to file\n");
fclose(file1);
return 0;
}