sprintf buffer sizes

后端 未结 3 1888
無奈伤痛
無奈伤痛 2021-01-20 19:00

I\'m a novice programmer, but usually I can unravel my own issues. This time I solved the issue, but it still stumps me. A friend suggested I ask this community for input.

3条回答
  •  梦谈多话
    2021-01-20 19:38

    C strings are null terminated. If you have 2 characters ("10" for example) you need a buffer sized 2 + 1 for the null terminator.

    sprintf() adds this to the end of your buffer; in your current case you actually have a buffer overflow because you're not providing enough space.

    The modern, safer approach is to use snprintf() to which you supply the length of the buffer.

提交回复
热议问题