[英]Segmentation fault in char array
我正在尝试从https://practice.geeksforgeeks.org/problems/anagram/0解决字谜问题。 当我尝试使用自定义输入在我的计算机上时,它工作正常。 但是当我在上面的链接中尝试时,它会引发分段错误。 我在这里做错了什么? 提前致谢。
我的代码
#include <bits/stdc++.h>
int checkAnagram(char a[],char b[])
{
int i,x=0;
int n = strlen(a);
int m = strlen(b);
if(n != m)
return -1;
for (i = 0; i < n; i++) {
x^=a[i];
}
for (i = 0; i < n; i++) {
x^=b[i];
}
return x;
}
int main(int argc, char const *argv[]) {
int t; //No of testcases
char a[100],b[100];
scanf("%d", &t);
while(t--)
{
scanf("%s", a);
scanf("%s", b);
checkAnagram(a,b) == 0?printf("YES\n"):printf("NO\n");
}
return 0;
}
PS - 请在上面的链接中尝试。 我不可能知道他们通过的所有测试用例,包括隐藏的测试用例。
尝试这个:
void checkAnagram(char a[],char b[])
{
int n1 = strlen(a);
int n2 = strlen(b);
if (n1 != n2) {
printf("NO\n");
return;
}
int x=0;
for (int i = 0; i < n1; i++) {
x^=a[i];
x^=b[i];
}
x == 0?printf("YES\n"):printf("NO\n");
}
编辑(解释):您的数组大小可能不同。 由于两个不同大小的数组不能互为字谜,我们首先检查它并在大小不同时退出。
请注意,即使没有这个逻辑要求,您仍然需要检查数组大小。 您在索引i
处访问两个数组,因此您需要确保两个数组至少为该大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.