Skip to content

Conversation

@gatieme
Copy link

@gatieme gatieme commented Feb 26, 2017

修复了mingw下的显示异常的问题

由于 linuxwindows 下snprintf返回值不同

根据输出结果总结如下:

  1. windows 下, 如果字符串长度大于 count, 函数返回 -1 以标志可能导致的错误, 如果字符串长度小于或者等于 count, 函数返回实际的字符串的长度. 在 linux 下, 返回实际的字符串的长度.

  2. 输出不同, 在 windows 下, 如果字符串长度大于 count, 会输出 count 个字符, 但是没有结束符, 后面的值会混乱; 如果字符串的长度等于 count, 输出全部字符串, 但是没有结束符, 后面的值同样很混乱; 在 linux 下, 永远输出 count - 1 个字符, 加一个结束符 '\0', 所以在本例子中, count = 13 时, 无论 windows 下还是 linux 下都正确.

因此修改代码中, snprintf 后, 增加 buf[XXX] = '\0';

snprintf(buf, mark_p - p, "%s", p + 1);
buf[mark_p - p - 1] = '\0';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant