鱼C论坛

 找回密码
 立即注册
查看: 1137|回复: 5

求助大佬

[复制链接]
发表于 2022-3-21 15:29:45 | 显示全部楼层 |阅读模式
60鱼币
就是一个很简陋的判断()【】{}是否完整的,但是好像连最简单的()也出错了,用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[strlen(s)+1];
for(i=0 ; i<strlen(s) ; i++){
if(s[i] == '(' || '[' || '{')
a[i] = s[i];

if(s[i] == ')' || '}' || ']'){
if(find(a,s[i]) != EOF)
    a[find(a,s[i])] ='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[i] == d){
            return i;
        }
    }
return EOF;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 15:38:44 | 显示全部楼层
本帖最后由 jhq999 于 2022-3-21 15:45 编辑

对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-21 16:29:30 | 显示全部楼层
他为啥直接在19行和21行来回跳啊,完全无视if和下面的语句,然后执行完3次就返回了ture
GXL$538LTBYD]0LFY$1}[]2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-21 16:51:00 | 显示全部楼层
jhq999 发表于 2022-3-21 15:38
对于代入函数后,strlen(s)=4,只是指针这个类型的长度,和数组没关系了

那是sizeof吧,strlen还是没问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-21 16:51:43 | 显示全部楼层
自己解决了大火
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-21 17:00:50 | 显示全部楼层
桥驿听雨落 发表于 2022-3-21 16:51
那是sizeof吧,strlen还是没问题的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 10:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表