求助大佬
就是一个很简陋的判断()【】{}是否完整的,但是好像连最简单的()也出错了,用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:45 编辑
对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了 他为啥直接在19行和21行来回跳啊,完全无视if和下面的语句,然后执行完3次就返回了ture{:10_266:} jhq999 发表于 2022-3-21 15:38
对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了
那是sizeof吧,strlen还是没问题的 自己解决了大火 桥驿听雨落 发表于 2022-3-21 16:51
那是sizeof吧,strlen还是没问题的
{:5_104:}
页:
[1]