Я пишу простой токенизатор на 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);
}
Кто-нибудь знает, что это вызывает?