【发布时间】:2011-01-21 23:05:21
【问题描述】:
我可能很愚蠢,在这种情况下你需要原谅我......但我不明白这一点。 我正在分配一个 16 个字符的缓冲区,然后(在 for 循环中)放入 23 个(!?)随机字符,然后将这些内容打印出来。
我不明白如何将 23 个字符放入一个被分配为 16 个字符的缓冲区...当我将循环更改为 24 个字符时,我得到了一个错误(至少在 Linux 中使用 gcc )...但为什么不“早点”(17 个字符应该打破它...不是吗?)
这是我的示例代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
char *buf;
buf = malloc(16 * sizeof(*buf));
if(buf == NULL) exit(1);
for(n = 0; n < 22; n++)
{
buf[n] = rand()%26+'a';
}
buf[n]='\0';
printf("Random string: %s\n", buf);
free(buf);
buf = NULL;
getchar();
return 0;
}
【问题讨论】:
标签: c