Я пытаюсь написать функцию, которая проверяет, все ли скобки закрыты (равное количество открытых и закрытых) из аргумента командной строки.
Это проверить на приемлемый ввод. ./main (10 + 10) с пробелами между ними, поэтому каждая скобка является собственным токеном в командной строке. Чтобы убедиться, что аргумент командной строки не похож на ./main (10 + 10
Я попытался изменить '(' на 40 и ')' на 41. Я пытался использовать argv [i] вместо * (argv + i), но у меня нет большого опыта работы с указателями. (Я родом из Java).
int main (int argc, char **argv) {
int i;
char *outputBase;
char *helpFlag;
char **equation;
equation = NULL;
/*check for validity of inputs*/
if (checkAmtArgs(argc) == false || checkParens(argc, argv) == false) {
exit(EXIT_FAILURE);
}
for (i = 1; i < argc; i++) {
if (isNumber(argv[i])){
strcat(*equation, *(argv + i));
} else if (isOperator(argv[i])) {
strcat(*equation, *(argv + i));
} else if (isBase(argv[i])) {
outputBase = argv[i];
} else if (isFlag(argv[i])) {
helpFlag = argv[i];
} else {
printf("%s\n", "Exiting program");
exit(EXIT_FAILURE);
}
}
return 0;
}
/*check for valid number of parantheses*/
int checkParens(int argc, char **argv) {
int i;
int result;
int openParen;
int closeParen;
openParen = 0;
closeParen = 0;
for (i = 0; i < argc; i++) {
if (*(argv + i) == '(' ) {
openParen++;
} else if (*(argv + i) == ')' ){
closeParen++;
}
}
if (openParen != closeParen) {
result = false;
printError(errorNum, 10);
} else {
result = true;
}
return result;
}
main.c: In function ‘checkParens’:
main.c:67:21: warning: comparison between pointer and integer
if (*(argv + i) == '(' ) {
^~
main.c:69:28: warning: comparison between pointer and integer
} else if (*(argv + i) == ')' ){