【发布时间】:2020-04-12 08:34:39
【问题描述】:
作为作业,我必须编写一个程序,用“*”替换所有由 3 个字母组成的单词。
例如:
input: cod is everything and I love it
output: * is everything * I love it
这是我的程序:
int main()
{
char cuvant[101], final[101];
char* pch;
cin.get(cuvant, 100);
pch = strtok(cuvant, " ");
while (pch != NULL)
{
if (strlen(pch) == 3)
{
strcat(final, " *");
}
else
{
strcat(final, " ");
strcat(final, pch);
}
pch = strtok(NULL, " ");
}
cout << final;
}
我没有收到任何错误 - 但输出为空白。此外,程序不会以代码 0 退出(应该如此),它说“以代码 -1073741819 退出”。很明显,事情正在发生。
我是不是用 strtok/strcat 错了?
我觉得 strcat 不能用于我的情况,这是错误的原因,但我不确定。我说的对吗?
如果是这样,我该如何解决我的问题?
谢谢。
【问题讨论】:
-
1.使用
std::string2. 使用+连接 -
请选择 C 和 C++。我希望 StackOverflow 不会让您同时选择两者。
-
@AndyG 对不起 - 我这样做的原因是因为在课堂上我们正在学习 c++,但实际上我们正在做很多 c 风格的事情。包括使用字符数组。不幸的是,我不能使用 std::string。
-
strcat要求目标是一个以空字符结尾的字符数组。char final[101]声明了一个未初始化的数组,因此您对strcat的调用会调用未定义的行为
标签: c++