Xcode调试器弄乱了输入

时间:2019-03-04 18:02:18

标签: c xcode

我正在用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);
}

有人知道这是什么原因吗?

0 个答案:

没有答案