#define __STDC_WANT_LIB_EXT1__1
#include <stdio.h>
#include <string.h>
int main(void)
{
char preamble[] = "The joke is:\n";
char str[][40] = { "My dog hasn't got any nose.\n",
"How does your dog smell then?\n",
"My dog smells horrible.\n"
};
unsigned int strcount = sizeof(str) / sizeof(str[0]);
unsigned int length = 0;
for (unsigned int i = 0; i < strcount; i++)
{
length += strnlen_s(str[i], sizeof(str[i]));
}
char joke[length + strnlen_s(preamble, sizeof(preamble)) + 1];
if (strncpy_s(joke, sizeof(joke), preamble, sizeof(preamble)))
{
printf("error\n");
return 1;
}
for (unsigned int i = 0; i < strcount; i++)
{
if (strncat_s(joke, sizeof(joke), str[i], sizeof(str[i])))
{
printf("error\n");
return 2;
}
}
printf("%s", joke);
return 0;
}
这是代码 但是出错了 和书上对了下一模一样 是不是编译器的问题 我用的是vs2013
d:\vsex\experiment\experiment\experiment.cpp(18): error C2057: 应输入常量表达式
1>d:\vsex\experiment\experiment\experiment.cpp(18): error C2466: 不能分配常量大小为 0 的数组
1>d:\vsex\experiment\experiment\experiment.cpp(18): error C2133: “joke”: 未知的大小
1>d:\vsex\experiment\experiment\experiment.cpp(19): error C2070: “char []”: 非法的 sizeof 操作数
1>d:\vsex\experiment\experiment\experiment.cpp(26): error C2070: “char []”: 非法的 sizeof 操作数
这是错误的内容