Curso de Programação C | Como descobrir o tamanho de uma String? | aula 133

preview_player
Показать описание
Hoje vamos aprender como descobrir o tamanho de uma String com a linguagem de programação C.

Agora que sabemos como identificar o fim de uma string, procurando pelo caracter de fim de string '\0', é fácil contarmos o tamanho de uma string.

Com uma repetição do tipo ENQUANTO podemos percorrer uma string e, enquanto não encontrarmos o fim da string, somamos 1 em uma variável contadora, assim:

int tam = 0
char palavras[100]
while(palavras[tam] != '\0')
tam++;

Рекомендации по теме
Комментарии
Автор

Excelente vídeo, era justamente o que eu estava procurando.

felipearruda
Автор

Pode remover esse teste do if para o enter apenas lendo a string pela função scanf? Testei e usando ela, o enter é "removido".

minniealencar
Автор

Obrigado por se disponibilizar a repassar seus conhecimentos?
Quanto a esta aula, gostaria de saber o que poderia ocasionar se ao invés da condição do while ser
palavras[i] != '\0'
fosse
palavras[i] != '\n'
Não traria o resultado da mesma forma (ex. Oi tamanho string 2)? E ainda diminuiria uma estrutura "while" do último algorítimo apresentado, além de reduzir uma variável (tam) por podermos usar a variável " i " para demonstrar o tamanho da string.
Fiz aqui e deu certo mas não sei o que poderia acarretar em um algorítimo maior.
Obrigado pelos ensinamentos!

wilsondehoul
Автор

nao precisaria criar a variavel tam, poderia ser usado a variavel i, pois as 2 tem sempre o mesmo valor durante a execucao

rogeriobruno
Автор

Com o FOR:






#include <stdio.h>
#include <stdlib.h>

int main () {
int tam = 0;
int tam_e = 0;
char word[10] = {};

printf("Digite uma string: ");
fgets(word, 10, stdin);

//CONTANDO O ENTER
for(int i=0;word[i]!='\0';i++){
tam_e++;
}

//SEM CONTAR O ENTER C/ FOR
// NESSE PASSO SOMENTE ESTAMOS SUBSTITUINDO O "ENTER" POR "NULO"
for(int y=0;word[y]!='\0';y++){
printf("%d -> %c\n", y, word[y]);
if(word[y]=='\x0a'){
word[y]='\0';
break;
}
}
printf("CONTABILIZADO A STRING ACIMA! %d\n\n", tam_e);



//AQUI PODEMOS CONFIRMAR QUE O ENTER FOI SUBSTITUIDO
for(int y=0;word[y]!='\0';y++){
printf("%d -> %c\n", y, word[y]);
tam++;
}
printf("\nCONTABILIZADO A STRING ACIMA! %d\n\n", tam);

printf("
printf(" | Tamanho da string (CONTANDO O ENTER): %2d |\n ", tam_e);
printf("| Tamanho da string (SEM CONTAR O ENTER): %2d |\n ", tam);



}

BreachBusters