我正在嘗試創建一個簡單的投票系統,它可以非常簡單地通過爲每個投票打印一個星號的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