C语言用if(strstr(s1,s2))判断字符串是否存在子字符串,无论有没有都会进入到if里是怎么回事?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C语言用if(strstr(s1,s2))判断字符串是否存在子字符串,无论有没有都会进入到if里是怎么回事?

代码作用是首先得到5行数字字符串
然后得到一个想要查找的重复数字型子字符串的长度和数字,比如长度3,数字0,就是查找'000'
然后判断第几行有子字符串,打印出来
我现在的问题是……不管有没有,返回结果都是有
还有最后一行的%s没有办法把数组字符串打印出来,我怀疑那个我整合的子字符串有问题,但是不太懂,求指点

int main(){
    char r1[5],r2[5],r3[5],r4[5],r5[5];
    int num=0,sn[10];
    char tf[10];
    int n,s;
    gets(r1);
    gets(r2);
    gets(r3);
    gets(r4);
    gets(r5);
    printf("Length of the sequence =");
    scanf("%d",&n);
    printf("Value of the sequence =");
    scanf("%d",&s);
    for (int i=0; i<n; i++) {
        tf[i]=s;
    }
    for (int i=0; i<n; i++) {
        printf("%d\n",tf[i]);
    }
    if(strstr(r1,tf)){
        num++;
        sn[num-1]=1;
    }
    if(strstr(r2,tf)){
        num++;
        sn[num-1]=2;
    }
    if(strstr(r3,tf)){
        num++;
        sn[num-1]=3;
    }
    if(strstr(r4,tf)){
        num++;
        sn[num-1]=4;
    }
    if(strstr(r5,tf)){
        num++;
        sn[num-1]=5;
    }
    printf("%d\n",num);
    for (int i=0; i<num; i++) {
        printf("在第%d行发现了%s\n",sn[i],tf);
    }
}

展开
收起
a123456678 2016-06-12 10:34:48 3764 0
1 条回答
写回答
取消 提交回答
  • a123456678

    那个 0的assic码值应该是NUL吧
    应该 tf[i] = (char) (s + 48);

    2019-07-17 19:33:23
    赞同 展开评论 打赏
问答分类:
相关产品:
问答排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载