sprintf制作一堆文件名

Mat*_*ble 1 c printf

我正在尝试使用sprintf制作一堆代表文件名的字符串.这些文件将命名为1,2,3,4,5 ......但是当我这样做时,我得到了一些奇怪的错误.for循环只打印出第一轮.输出如下所示:str:1.xlxs i:7567468

char str[3];
int i;

for(i = 0; i < FILES; i++){
    sprintf(str, "%d%s", i+1, ".xlxs");
printf("str: %s\n", str);
    printf("i: %i\n", i);
}
Run Code Online (Sandbox Code Playgroud)

jsp*_*cal 5

str[3]缓冲区太小,无法容纳的数据("1.xlxs").至少str[7]应该保存字符串和空字节.

如果缓冲区太小,您将获得缓冲区溢出:

http://en.wikipedia.org/wiki/Stack_buffer_overflow