我正在用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);
}
有人知道这是什么原因吗?