strcat () имеет проблему в xcode с помощью gcc - PullRequest
0 голосов
/ 10 ноября 2019

если я компилирую с XCode на высоте strcat(), возвращается следующая ошибка:

Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)

while, если я компилирую с терминала (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++;
        }
    }

1 Ответ

1 голос
/ 10 ноября 2019

Код заменяет каждое вхождение s2 в s1 звездочкой *.

На некоторых платформах поведение strcat не определено, если источник и пункт назначения перекрываются, что являетсяслучай здесь, так как ptr указывает на s1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...