【发布时间】:2016-12-08 09:07:58
【问题描述】:
我正在练习下面的代码
int main() {
int N, Q, cnt;
scanf("%d", &N);
char **str1=(char**)malloc(sizeof(char*)*N);
for(int i=0; i<N; i++) {
str1[i]=(char*)malloc(sizeof(char)*20);
scanf("%[^\n]s", str1[i]);
}
scanf("%d", &Q);
char **str2=(char**)malloc(sizeof(char*)*Q);
for(int i=0; i<Q; i++) {
str2[i]=(char*)malloc(sizeof(char)*20);
scanf("%[^\n]s", str2[i]);
}
for(int i=0; i<Q; i++) {
for(int j=0, cnt=0; j<N; j++) {
// if statement
if( strcmp(str2[i], str1[j]) == 0) cnt++;
}
printf("%d\n", cnt);
}
for(int i=0; i<N; i++){
free(str1[i]);
}
for(int i=0; i<Q; i++) {
free(str2[i]);
}
free(str1);
free(str2);
return 0;
}
性病输入是
4
aaa
bbb
ccc
aaa
3
aaa
bbb
cca
比打印出来
2
1
0
因为
- 'aaa' 是 2 次li>
- 'bbb' 是 1 次
- 'cca' 是 0 次
if( strcmp(str2[i], str1[j]) == 0) cnt++;
然而 if 语句,不算cnt++
怎么了,我的 strcmp() 代码?
【问题讨论】: