0
#include <stdio.h>
int any(char s1[], char s2[]) {
//converts to lower case
int c = 'a';
int i1 = 0;
while (s1[i1] != '\0') {
if (s1[i1] >= 'A' && s1[i1] <= 'Z')
s1[i1] += 32;
++i1;
}
int i2 = 0;
while (s2[i2] != '\0') {
if (s2[i2] >= 'A' && s2[i2] <= 'Z')
s2[i2] += 32;
++i2;
}
i1 = 0;
while (s1[i1] != '\0') {
i2 = 0;
while (s2[i2] != '\0') {
if (s1[i1] == s2[i2])
return i1;
++i2;
}
++i1;
}
return -1;
}
main() {
//printf("test");
printf("%d", any("This is fun", "fin"));
}
此代码会导致分段错误,我敢肯定,当我尝试设置数组中的字符等于int的一个碰巧的各个指标。我该如何避免出现seg故障?设置字符数组等于整数
@chqrlie:是的,压痕是个好主意,但没有规则,你必须加一个空格后的关键字(和二元运算可以去任何一种方式)。 –
@chqrlie:我理解你的观点,但我的观点是你不应该强迫你这样看待别人。指导某人在关键词之后放置空格(就好像他们做了错误的事情一样)是可怜的形式,就像指示某人在拼写“颜色”后拼写“颜色”一样。 (另外,C的发明者现在已经死了,而且AFAIK没有参与进去。) –
@SteveSummit:我的坏,Brian Kernighan没有发明C,他只是合作撰写* C语言编程*,所以* Go编程语言*。 RIP Dennis Ritchie。我同意在最初的评论中我有点强烈,但代码很糟糕,因为SO上的帖子太多了,而找到bug的第一步是通过'cb'运行。 – chqrlie