Отладчик Xcode возиться с вводом - PullRequest
0 голосов
/ 04 марта 2019

Я пишу простой токенизатор на C, и когда я использую консоль XCode для запуска своего кода и ввода своего лексера, иногда он добавляет странные символы в конец моего ввода.

Вот входные данные, в которые иногда добавляются дополнительные символы

Входные данные находятся в строке, начинающейся с (>>), а данные, которые я печатаю из буфера, находятся ниже него.Вы можете увидеть, как дополнительные символы "\ 357 \ 234 1" каким-то образом попали в буфер.

>> 2147483618
num read: 14
2 1 4 7 4 8 3 6 1 8 \357 \234 1 

Я думал, что это была проблема переполнения, но это происходит только тогда, когда я запускаю свой код через отладчик Xcode.

Вот что происходит, когда я просто использую терминал для выполнения своего кода

>> 2147483618
num read: 11
2 1 4 7 4 8 3 6 1 8

Вот мой код C для чтения символов от пользователя:

for (;;) {
    char *buff = malloc(20 * sizeof(char));

    // Max number of characters to read
    size_t num_to_read = 0;

    // Number of characters actually read
    size_t num_read = 0;

    num_read = getline (&buff, &num_to_read, stdin);
    printf("num read: %d\n", num_read);

    // Code to print out the buffer
    for (int i = 0; i < num_read; i++) {
        if (buff[i] == '\0')
            break;
        printf("%c ",buff[i]);
    }

    free(buff);
}

Кто-нибудь знает, что это вызывает?

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