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

strlen no laço for

Quando utilizei a função strlen, o código não funcionou como o esperado. E quando escrevi o tamanho do array manualmente o código funcionou. Por que isso acontece?

for(int i = 0; i < strlen(notas); i++){
        printf("Nota %d\n", notas[i]);
    }

for(int i = 0; i < 5; i++){
        printf("Nota %d\n", notas[i]);
    }
2 respostas
solução!

Olá Pedro, tudo bem?

A função strlen é usada para calcular o tamanho de uma string ou de um array de char (que no fundo é uma string também), para vetor de inteiro isso não funciona. Mas veja bem, se você tiver um vetor de char assim:

char palavra[20];

E fizer o strlen de palavra, vai receber o resultado 0. Agora se fizer:

char palavra[20] = "Pedro";

E fizer strlen(palavra) vai ter o resultado de 5, que é a quantidade de caracteres da palavra Pedro, e não o 20 dentro dos colchetes. Normalmente um vetor de inteiro você já tem o tamanho dele, porque precisa inicializa-lo de alguma forma, então não precisaria de usar o strlen. Mas se por algum acaso você precisar calcular o tamanho de um vetor de inteiro, é possível fazer dessa forma:

int tamVetor = sizeof(notas)/sizeof(int);

A variável tamVetor terá o tamanho do vetor de inteiros.

Espero que eu tenha conseguido te ajudar. Qualquer coisa é só falar ;)

Obrigado André, agora consegui entender bem o funcionamento da função strlen :)