Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre o scanf

Na aula 6 do curso de C II, criamos o código de gravar uma nova palavra num arquivo externo usando o scanf.

Esse é um trecho do código:

void adicionapalavra() {
    char quer;

    printf("Você deseja adicionar uma nova palavra no jogo (S/N)?");
    scanf(" %c", &quer);

    if(quer == 'S') {
        char novapalavra[20];

        printf("Digite a nova palavra, em letras maiúsculas: ");
        scanf("%s", novapalavra);

        // agora falta salvar no arquivo
    }

}

Minha dúvida é: por que usamos o "&" no scanf do "quer", mas não usamos na do "novapalavra"? não temos que informar o endereço da variável para ambos?

2 respostas
solução!

Oi Thiago, tudo certo?

A função scanf() ela recebe o endereço de memória onde deve salvar o que foi lido. Ou seja, quando lemos um número, por exemplo, nós falamos para a memória guardar esse valor em determinado endereço.

Mas, o que acontece é que a novapalavra já é um ponteiro, pois é um vetor de caracteres (e vetores são ponteiros), então já aponta para o endereço de memória naturalmente. Por esse motivo, não usamos o & na frente.

Conseguiu compreender? Espero ter ajudado =)

Ahh sim, entendi! Muito obrigado pela sua resposta! ;-)