Ir ao conteúdo
  • Cadastre-se
Trying

RESOLVIDO [C] - Dúvida com condição estranha em laços

Recommended Posts

Não consigo entender quando é colocado um vetor de strings como condição de um laço. Exemplo:

int i;char string[]= {"String qualquer"}; for(i=0; string[i]; i++)      //Essa condição no laço for faz com que ele entre em loop até imprimir a ultima letra da string. Mas por que?{        printf("%c", string[i]);}

Outro exemplo, o que acontece na função axuliar findCharactere no while?

#include <stdio.h>#include <stdlib.h>#include <conio.h> /* Funções que retornam ponteiros */ // --- Protótipo da Função Auxiliar ---char *findCharactere(char caractere, char *str); int main(int argc, char *argv[]){    char frase[80];    char chr, *pointer;        printf("\nDigite uma frase: ");    gets(frase);    printf("Digite um caractere: ");    chr = getche();    pointer = findCharactere(chr, frase);        if(pointer) printf("\n\n%s\n\n", pointer); //Se encontrar correspondência, imprimi a frase a partir dela    else printf("\n\nNenhuma paridade\n\n");   system("PAUSE");   return 0;} // end main  // --- Desenvolvimento da Função Auxiliar char *findCharactere(char caractere, char *str){     int counter = 0;          while((caractere != str[counter]) && (str[counter] != '\0')) counter++; //O que esta sendo comparado?          if(str[counter]) return (&str[counter]); //Se houver correspondência , retorna o ponteiro para a localização          else return (char *) '\0'; //Senão, retorna um ponteiro nulo          } //end function

gostaria que se possível alguém me desse um norte, o que o string representa para o laço? Sei que string[0] é o primeiro caracter da string, mas não entendo a lógica de comparação do laço.

 

Muito Obrigado!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que basicamente um string está composto desta forma "isso é um string\0". Esse '\0' (NULL) é o que vai logo ao final do string e faz com que pare. em outras palavras e o mesmo que string != '\0'

int i;char string[]= {"String qualquer"}; for(i=0; string[i] != '\0'; i++)      //Essa condição no laço for faz com que ele entre em loop até imprimir a ultima letra da string. Mas por que?{        printf("%c", string[i]);}

Ou mais fácil de entender:

int i;char string[]= {"String qualquer"}; for(i=0; string[i] != 0; i++)      //Essa condição no laço for faz com que ele entre em loop até imprimir a ultima letra da string. Mas por que?{        printf("%c", string[i]);}

Esse nulo são as funções como scanf que colocam ele de forma implícita sem que você saiba, porém ele existe. Por que existe esse null? Como você acha que o printf sabe onde tem que parar? Imagine que eu crio char string[1000] = "Hello"; Só usei 4, porém printf não sai imprimindo 1000 chars não é? Então... É porque quando eu declaro um char string[1000] = "Hello";, o programa vai logo depois da ultima letra e bota o nulo! Em outras palavras fica char string[1000] = "Hello\0";. Ok B)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×