Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数组声明有问题_C_Declaration_Strlen - Fatal编程技术网

C 数组声明有问题

C 数组声明有问题,c,declaration,strlen,C,Declaration,Strlen,我的代码有点问题。 我正在编写一个C项目,我需要声明一个与另一个字符大小完全相同的字符字段,问题是任何时候我的初始字符串(secret)超过7个字符,它声明为14个字符。 这是一句话: char猜词[strlen(秘密)] 更新,即使我将其声明为: char guessedWord[10]; 秘密比它宣称的7长14,WTF?我想那应该是不可能的。。。(使用strlen获取长度) 函数如下所示: void hangman(const char secret[]) //Samotna hr

我的代码有点问题。 我正在编写一个C项目,我需要声明一个与另一个字符大小完全相同的字符字段,问题是任何时候我的初始字符串(secret)超过7个字符,它声明为14个字符。 这是一句话:

char猜词[strlen(秘密)]

更新,即使我将其声明为:

char guessedWord[10];
秘密比它宣称的7长14,WTF?我想那应该是不可能的。。。(使用strlen获取长度)

函数如下所示:

    void hangman(const char secret[]) //Samotna hra
{
    int guesses=8; //zostavajuce pokusy
    int iteration=0; //iteracia
    char *lettersLeft="abcdefghijklmnopqrstuvwxyz"; //zostavajuce pismena
    char letters_guessed[ALPHABET_LENGHT]; //uz hadane pismena
    char input[100]; //vstupny znak
    char guessedWord[8]; //Zobrazene slovo

    for (int i=0; i < strlen(secret); i++) //inicializacia hadaneho slova
    {
        guessedWord[i]='_';
    }
    for (int i=0; i < ALPHABET_LENGHT; i++) //inicializacia zoznamu hadanych pismen
    {
        letters_guessed[i]='_';
    }

    printf("Guessed word init %s strlen of secret is %ld, secret is %s and strlen of guessedWord is %ld\n", guessedWord, strlen(secret), secret, strlen(guessedWord));
void hangman(const char secret[])//Samotna hra
{
int guesss=8;//zostavajuce pokusy
int迭代=0;//iteracia
char*lettersLeft=“abcdefghijklmnopqrstuvxyz”//zostavajuce pismena
猜到的字符[字母表长度];//乌兹·哈丹·皮斯梅纳
字符输入[100];//vstupny znak
char猜词[8];//Zobrazene slovo
for(int i=0;i
字符猜词[strlen(secret)+1]开始
。其次,我们需要看到a,因为您所说的没有意义。我应该在哪里上传完整的代码?不完整的代码,。复制问题的最短代码。很抱歉,我的错误,我使用了复制/粘贴,我更正了它。我希望您知道C中的字符串是字符字节序列,结尾为空。谢谢,我应该这样做更彻底地检查了strlen函数。一旦计时器用完,我会将此答案标记为正确。谢谢。现在您已经开始学习如何提出一个好问题:信息不太少,也不是“代码墙”。有时很难获得正确数量的代码,因为您不知道错误在哪里。再次感谢
char guessedWord[8]; //Zobrazene slovo

for (int i=0; i < strlen(secret); i++) //inicializacia hadaneho slova
{
    guessedWord[i]='_';
}
int len = strlen(secret)
char guessedWord[len+1]; //Zobrazene slovo
int i;
for (i=0; i < len; i++) //inicializacia hadaneho slova
{
    guessedWord[i]='_';
}
guessedWord[i] = '\0'; // i == len here