gpt4 book ai didi

c - 如何比较指针与ascii字符?

转载 作者:行者123 更新时间:2023-11-30 16:15:54 26 4
gpt4 key购买 nike

我正在尝试编写一个函数,用于检查命令行参数中的所有括号是否已关闭(打开和关闭的数量相等)。它是检查可接受的输入。 ./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) == ')' ){

最佳答案

您必须使用 **(argv + i),即两个星号,因为您已经创建了指向指针的指针。

关于c - 如何比较指针与ascii字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com