學習一些基本的C++,試圖理解函數,但有一段時間試圖正確地編寫函數。 這裏的原代碼(正常工作):函數中的C++分段錯誤
#include <iostream>
#include <string>
//#include "assn.h"
using namespace std;
int main()
{
string userinput;
char ch1 = '-';
cout << "Enter word: ";
getline(cin, userinput);
int i = 0;
for (i; i < userinput.size(); ++i)
{
if (userinput.at(i) >= 'a' && userinput.at(i) <= 'z')
userinput.at(i) = ch1;
}
cout << userinput << endl;
return 0;
}
,這裏是我打字試圖使它的功能代碼:
#include <iostream>
#include <string>
//#include "assn.h"
using namespace std;
string inputUnsolved(string input);
int main()
{
string userinput;
cout << "Enter word: ";
getline(cin, userinput);
inputUnsolved(userinput);
cout << userinput << endl;
return 0;
}
string inputUnsolved(string input)
{
char ch1 = '-';
int i = 0;
for (i; i < input.size(); ++i)
{
if (input.at(i) >= 'a' && input.at(i) <= 'z')
input.at(i) = ch1;
}
}
它編譯罰款,但在進入userinput並試圖執行後,它顯示「分段錯誤」
嘗試重寫幾次沒有運氣,我很坦白地不知道足以找到一種方法來解決它。代碼基本上讀入一個字符串變量並將其顯示爲一組破折號(hangman)。
不知道是相關的段故障錯誤,但(1)'input'是按值傳遞的參數,它會被複制並具有無關變量'userinput'在'主()'。 (2)你應該在'inputUnsolved()'中返回。 – songyuanyao
由於您在'inputUnsolved'中沒有return語句,所以無法編譯,這是一個編譯錯誤。所以必須有更多的代碼讓它崩潰。 –