桥驿听雨落 发表于 2022-3-21 15:29:45

求助大佬

就是一个很简陋的判断()【】{}是否完整的,但是好像连最简单的()也出错了,用dev调试,到   int c= (int)strlen(s)+1这句时就报错

#include<stdio.h>
#include<stdbool.h>
#include<string.h>
bool isValid(char * s);
int main(){

char *s = "()";
printf ("%d",isValid(s));

    return 0;
}

int find(char *s,char c);

bool isValid(char * s){
int i ;
char a;
for(i=0 ; i<strlen(s) ; i++){
if(s == '(' || '[' || '{')
a = s;

if(s == ')' || '}' || ']'){
if(find(a,s) != EOF)
    a)] ='0';
    else return false;
}
}
return true;


}

int find(char *s,char c){
    int i =0;
    char d;
    switch(c){
      case ')':d='(';break;
      case ']' : d='[' ; break;
      case '{' :d= '}' ; break;
    }
    for(; i<strlen(s); i++){
      if(s == d){
            return i;
      }
    }
return EOF;
}

jhq999 发表于 2022-3-21 15:38:44

本帖最后由 jhq999 于 2022-3-21 15:45 编辑

对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了

桥驿听雨落 发表于 2022-3-21 16:29:30

他为啥直接在19行和21行来回跳啊,完全无视if和下面的语句,然后执行完3次就返回了ture{:10_266:}

桥驿听雨落 发表于 2022-3-21 16:51:00

jhq999 发表于 2022-3-21 15:38
对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了

那是sizeof吧,strlen还是没问题的

桥驿听雨落 发表于 2022-3-21 16:51:43

自己解决了大火

jhq999 发表于 2022-3-21 17:00:50

桥驿听雨落 发表于 2022-3-21 16:51
那是sizeof吧,strlen还是没问题的

{:5_104:}
页: [1]
查看完整版本: 求助大佬