1
resposta

[Bug] BUG: warning: assignment makes integer from pointer without a cast [-Wint-conversion]

O erro "warning: assignment makes integer from pointer without a cast [-Wint-conversion]" aparece após cada letra da palavra secreta. Código:

#include <stdio.h>

int main() {
    char palavrasecreta[20];

    palavrasecreta[0] = "M";
    palavrasecreta[1] = "E";
    palavrasecreta[2] = "L";
    palavrasecreta[3] = "A";
    palavrasecreta[4] = "N";
    palavrasecreta[5] = "C";
    palavrasecreta[6] = "I";
    palavrasecreta[7] = "A";
    palavrasecreta[8] = "\0";

    sprintf(palavrasecreta, "MELANCIA");
}

Estou usando o Sublime para digitar, compilar e rodar o código, o que funcionou perfeitamente para mim até então.

1 resposta

Olá João! Como vai?

O aviso que você está recebendo, "assignment makes integer from pointer without a cast", ocorre porque você está tentando atribuir uma string (entre aspas duplas) a um elemento de um array de caracteres, o que não é permitido. Em C, strings entre aspas duplas são tratadas como ponteiros para o primeiro caractere da string, e não como caracteres individuais.

Para corrigir isso, você deve usar aspas simples para atribuir caracteres individuais ao array. Aqui está o seu código corrigido:

#include <stdio.h>

int main() {
    char palavrasecreta[20];

    palavrasecreta[0] = 'M';
    palavrasecreta[1] = 'E';
    palavrasecreta[2] = 'L';
    palavrasecreta[3] = 'A';
    palavrasecreta[4] = 'N';
    palavrasecreta[5] = 'C';
    palavrasecreta[6] = 'I';
    palavrasecreta[7] = 'A';
    palavrasecreta[8] = '\0'; // Não esqueça do caractere nulo para terminar a string

    // Ou você pode simplesmente usar sprintf para atribuir a string de uma vez
    sprintf(palavrasecreta, "MELANCIA");

    printf("%s\n", palavrasecreta); // Para verificar o resultado
}

Com essas alterações, o aviso deve desaparecer. Você também pode usar sprintf diretamente para inicializar a string, como mostrado no exemplo acima, o que é uma maneira mais simples e eficiente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.