C++ 函数的参数太少(char*)

C++ 函数的参数太少(char*),c++,function,arguments,C++,Function,Arguments,我在学校的一个项目中工作,我正在编写游戏《刽子手》。 不允许使用面向对象的编程。 所以我只想到函数(聪明男孩:D) 现在我有了以下功能: void LoadHangman(); int PlayHangman(char searchedWord[20], char platzhalter[8]); int FindLengthFromString(char searchedWord[]); int CheckIfLostOrWon(); 在函数LoadHangman中,我启动了一个单词,稍后应

我在学校的一个项目中工作,我正在编写游戏《刽子手》。 不允许使用面向对象的编程。 所以我只想到函数(聪明男孩:D)

现在我有了以下功能:

void LoadHangman();
int PlayHangman(char searchedWord[20], char platzhalter[8]);
int FindLengthFromString(char searchedWord[]);
int CheckIfLostOrWon();
在函数LoadHangman中,我启动了一个单词,稍后应该从用户那里找到它。 我还发起了一个名为占位符的角色,他刚得到“\ux”

char searchedWord[20] = {'H','a','n','g','m','a','n',0};
char placeholder[8] = {'_','_','_','_','_','_','_'};
现在我想把它转到函数PlayHangman(…)

现在,我启动PlayHangman(…)函数

编译器只是说: 开始时{从函数开始:

error: too few arguments to function 'int PlayHangman(char*, char*)'
error: at this point in file
在该函数的}结尾处:

error: too few arguments to function 'int PlayHangman(char*, char*)'
error: at this point in file
我为我自己感到愤怒,因为我太笨了,无法解决这个问题(这似乎是一个容易的问题……)

PS:我正在读一本C++书……但是……我…………不要……………… 孔代码,用于所有这些编程:

#include <iostream>

using namespace std;

///Funktionsdeklarationen
void LoadHangman();
int PlayHangman(char searchedWord[20], char placeholder[8]);
int FindLengthFromString(char searchedWord[]);
int CheckIfLostOrWon();

int main()
{
    ///Deklarationen
    int won_lost = CheckIfLostOrWon();

    ///Programm
    LoadHangman();
    switch(won_lost)
    {
        case 1: cout << "\n\nGlückwunsch! Sie haben gewonnen!\n"; return 0;break;
        case -1: cout << "\n\nSchade. Sie haben leider nicht gewonnen.\n";return 0; break;
        default : break;
    }
}

void LoadHangman()
{
    ///Deklarationen
    char searchedWord[20] = {'H','a','n','g','m','a','n',0};
    char placeholder[8] = {'_','_','_','_','_','_','_'};
    int lengthFromString;

    ///Programm
    lengthFromString = FindLengthFromString(searchedWord);
    cout << "Gesuchtes Wort: ";

    for(int i = 0; i < lengthFromString; i++) {cout << " " << placeholder[i] << endl;}

    cout << "Bitte geben Sie einen Buchstaben ein: ";

    PlayHangman(searchedWord,placeholder);
}

int PlayHangman(char searchedWord[20],char placeholder[8])
{
    ///Deklarationen   / Initialisation
    int uebereinstimmung;
    int fehlerAnzahl = 0;
    char character;
    int lengthFromString = FindLengthFromString(searchedWord);

    uebereinstimmung = 0;

    ///Programm
    cin >> character;

    for(int i = 0; i < lengthFromString; i++)                                                           //Für die Länge des Strings
    {
        if(character != searchedWord[i]) {uebereinstimmung -= 1;}                                       //Übereinstimmung verringern
        else if(character == searchedWord[i]) {placeholder[i] = character; uebereinstimmung = 100;};     //Platzhalter mit Buchstaben füllen und übereinstimmung auf 100 setzen
    }

    if(uebereinstimmung < 0) {fehlerAnzahl++;};

    return fehlerAnzahl;

}

int CheckIfLostOrWon(char searchedWord[],char placeholder[])
{
    ///Deklarationen
    int lengthFromString = FindLengthFromString(searchedWord);
    int fehlerAnzahl = PlayHangman();

    ///Programm
    int won = 0;
    for(int i = 0; i < lengthFromString; i++)
    {
        if(placeholder[i] == searchedWord[i]) {won++;};
    }
    if(won == lengthFromString) {return 1;};
    switch(fehlerAnzahl)
    {
        case 8: return -1;
    }
}

int FindLengthFromString(char searchedWord[])
{
    ///Deklarationen
    int lengthFromString = 0;
    int i = 0;

    ///Programm
    while(searchedWord[i] != 0) {lengthFromString++; i++;}
    return lengthFromString;
}
不太管用

[其他人的结果]

我纠正了我的愚蠢:

int-fehlerAnzahl=游戏玩家(搜索词,占位符)


谢谢大家。

函数需要两个参数

但是,当您尝试调用它时,不会传递任何参数:

int fehlerAnzahl = PlayHangman();
您需要将正确的参数发送到
PlayHangman
以解决此问题,编译器会提示您这是错误消息的问题,它会说:

error: too few arguments to function 'int PlayHangman(char*, char*)'

始终在启用所有警告的情况下编译,并注意任何警告和错误,因为这是使用编译器帮助您查找和修复问题的好方法。另外,如果这是一个真正的C++项目,我强烈建议您使用<代码> STD::STIN 来存储您的字符串,这样会使事情变得更容易。

< P>参见完整编译器错误消息:

k.cc: In function 'int CheckIfLostOrWon(char*, char*)':
k.cc:73:36: error: too few arguments to function 'int PlayHangman(char*, char*)'

     int fehlerAnzahl = PlayHangman();
                                    ^

这会告诉你该去哪里找。调用
PlayHangman
函数时,在该位置没有参数。如果编译器未指示错误发生的位置。。。那将是一个奇怪的编译器。

在第73行有一个
PlayHangman()
,没有参数。正如您所提到的,PLayHangman()函数接受两个参数,您必须始终传递两个参数。

checkiflostrwon
需要
在每个可能的路径中返回一个值(当前,如果
fehlerAnzahl
不是
8
,则它将从末尾脱落,从而导致未定义的行为)您的行
int fehlerAnzahl=PlayHangman()是错误的。调用函数时不带参数。没有参数小于2:-)为什么有一个空语句
在控制块后的几个位置?而且,
checkiflostrwon
并不总是返回值<代码>警告:控件达到非无效功能的结尾[-Wreturn type]
谢谢!我没有看到它(dump),我们不允许使用“finished”函数,但是cout和cin;
k.cc: In function 'int CheckIfLostOrWon(char*, char*)':
k.cc:73:36: error: too few arguments to function 'int PlayHangman(char*, char*)'

     int fehlerAnzahl = PlayHangman();
                                    ^