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

【字号: 日期:2023-05-25浏览:20作者:雯心

问题描述

代码作用是首先得到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('%dn',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('%dn',num); for (int i=0; i<num; i++) {printf('在第%d行发现了%sn',sn[i],tf); }}

问题解答

回答1:

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

回答2:

如果不存在,返回的是Null指针

相关文章: