我有一个'僵尸翻译的代码'作为我教授的一个例子。据我所知,它需要一串英语单词,并通过函数应用一些规则。它目前使用strcpy
和strcat
来执行此操作,但即使我将其更改为strcpy_s
,也无法编译。不包括其他功能(为了空间),这里是我的主要功能作为一个例子
int main()
{
char english[MAX];
char zombie[MAX];
char zombie_word[MAX];
int pos_e; /* Current position in english line of text */
int pos_z; /* Current position in line of translated zombie text */
while (1) {
pos_e = 0;
pos_z = 0;
strcpy(zombie, "");
cout << ("Enter English text: ");
cin >> english;
/* This loop translates the line from english to zombie. */
do
{
get_next_word(english, &pos_e, zombie, &pos_z);
translate_word(english, &pos_e, zombie_word, &pos_z);
strcat(zombie, zombie_word);
} while (pos_e < strlen(english));
print_translation(zombie);
}
return 0;
}
更具体地说,我应该如何处理strcat(zombie, zombie_word);
行以使其在Visual Studio 2015中正确编译?
这不是一个年级,我只是想在中期之前能够理解这一点,而且玩它有点困难。我不想通过_CRT_SECURE_NO_WARNINGS禁用它,以便我知道如果我需要做类似的事情该怎么办。
也许将char变量更改为字符串或类似的东西?我一直在寻找一段时间,无法找到实际的过程。 非常感谢您的帮助,非常感谢您的光临。
答案 0 :(得分:0)
来自Microsoft:strncat_s
您需要包含数组的长度以防止缓冲区溢出危险。
API是:
errno_t strncat_s(
char *strDest,
size_t numberOfElements,
const char *strSource,
size_t count
);
numberOfElements
是目标数组的大小。