【发布时间】:2019-11-10 16:04:46
【问题描述】:
如果我在 strcat() 的高度使用 XCode 编译,则会返回以下错误:
Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)
如果我从终端(gcc -Wall program.c -o Out)编译:
Illegal instruction: 4
-
lung2是s2的长度。 -
MAX等于30并且是数组的最大长度。
代码如下:
char s1[MAX] = { '\0' };
char s2[MAX] = { '\0' };
int flag = 0;
char *ptr;
unsigned long int lung1, lung2 = 0;
int verifica = 0;
j = 0;
...
while (j < lung1) {
ptr = strstr(s1, s2);
if (ptr) {
strncpy(ptr, "*", lung2);
strcat(s1, ptr + lung2);
flag = 1;
} else {
j++;
}
}
【问题讨论】:
-
如果我没看错,你的
strncpy电话说你是说要复制零个字符?lung2,就像他们得到的一个神秘的变量名一样,被分配了0,并且从未改变过。 -
这个例子还远未完成。哪一行导致崩溃,你确定它在这个块中吗?你传递的指针是什么?它们是否在任何已定义数组的范围内?
MAX是什么?我的问题比答案多得多。