【发布时间】:2019-04-24 01:06:04
【问题描述】:
我是 C++ 的新手,目前正在学习函数。我很难让这段代码正常工作。我将 C++ 与 <cstdio> 库一起使用,因为我的老师希望我使用 C++。漏洞是使用<cstdio> 所以代码是:
#include <iostream>
#include <cstdio>
void letters(char name[], char discipline[])
{
printf("type a name:\n\n");
scanf("%s", &name);
printf("\n\ntype a discipline:\n\n");
scanf("%s", &discipline);
printf("\n\nname: %s\n\ndiscipline: %s", name, discipline);
}
void calcsum(int point1, int point2, int sum)
{
printf("\n\ntype a point:\n\n");
scanf("%i", &point1);
printf("\n\ntype a second point:\n\n");
scanf("%i", &point2);
sum = point1 + point2;
printf("\n\nsum is: %i", sum);
}
int main(int argc, char** argv)
{
char name[100];
char discipline[100];
int point1, point2, sum;
letters(name, discipline);
calcsum(point1, point2,sum);
return 0;
}
在要求输入规则之前,一切正常。当我输入时,它要求输入名称,然后出现一个错误选项卡。这发生在我所有涉及 char 数组和任何其他数据类型的代码中。
【问题讨论】:
-
好吧,你应该使用
std::string而不是这些原始字符串,并且你已经包含了iostream,所以你也应该使用它,即将printf和scanf替换为std::cout和std::cin因为它是 c++ 而不是 c -
如果您应该使用 C++,那么您可能不应该尝试编写 C。
-
老师们通常不喜欢“漏洞”的解决方案,所以如果你失败了也不要感到惊讶。