我正在尝试创建一个简单的投票系统,它可以非常简单地通过为每个投票打印一个星号的makeGraph函数进行循环来获取结果并绘制它们。运行时,需要输入并运行,直到makeGraph函数运行。它打印出数千个完全未格式化的星号,然后终止“分段错误”。循环打印时的分段错误
#include <iostream>
#include <string>
using namespace std;
string makeGraph(int val)
{
int i;
for (i = 0; i < val; i++)
{
cout << "*";
}
}
int main()
{
string title;
cout << "Enter a title: \n";
cin >> title;
int vote;
int vote1, vote2, vote3 = 0;
do
{
cout << "Enter vote option: 1, 2, or 3.\n";
cin >> vote;
if (vote == 1)
{
vote1++;
}
else if (vote == 2)
{
vote2++;
}
else if (vote == 3)
{
vote3++;
}
} while(vote != 0);
cout << title << "\n";
cout << "Option 1: " << makeGraph(vote1) << "\n";
cout << "Option 2: " << makeGraph(vote2) << "\n";
cout << "Option 3: " << makeGraph(vote3) << "\n";
}
'makeGraph()'打印,但不返回任何东西,但是你使用它的返回值。这是未定义的行为。 – 2014-10-03 13:00:55
你应该初始化vote1和vote2为0.当前的代码只会初始化vote3。 – 2014-10-03 13:05:22
将'-Wall'传递给您的编译器,并修复警告。 – Yakk 2014-10-03 13:37:22