Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

1. Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

marcelo pereira da silva junior
marcelodp2

(usa Outra)

Enviado em 24/12/2012 - 02:55h

Boa noite pessoal, primeiramente meu nome é Marcelo, sou estudante do curso de farmácia mas tenho computação como hobby, como meu curso cobra muito então tenho pouco tempo pra aprender sozinho então apesar do tempo que já estudo me acho iniciante, mas vamos la... estou estudando linguagem C por uma apostila da net, nessa apostila tem o codigo abaixo como exemplo para utilização do comando "for", o o codigo escrito é para um programa lê uma string a ser digitada e contar a quantidade de caracteres "c" que tem no texto, fiz comentários no codigo para quando pegar depois já poder entender mas tem uma parte do código que eu não entendo, então quem poder me ajudar galera.... se falei alguma besteira aqui na minha explicação, ou tenha feito algum comentário errado no programa, por favor corrijam-me ^^

Essa é a linha do programa que eu não entendo, mais especificamente isso: != '\ 0'

for (i=0; string[i] != '\ 0'; i=i+1)

Esse é código do programa:
[code]
#include <stdio.h>
#include <stdlib.h>

int main ()
{
char string[100]; /* string até 99 caracteres, do 0 (sem valor) ao 99 */
int i, cont;
printf ("\n\nDigite uma frase: ");
gets(string); /*Le a string */
printf("\n\nFrase digitada:\n%s", string);
cont = 0;
for (i=0; string[i] != '\ 0'; i=i+1)
{
if (string[i] == 'c') /*se for a letra c*/
cont = cont +1; /* Incrementa o contador de caracteres*/
}
printf("\nNumero de caracteres c = %d \n\n", cont);
system ("PAUSE");
return(0);
}[\code]


  


2. Re: Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 24/12/2012 - 08:36h

marcelodp2 escreveu:
[code]
#include <stdio.h>
#include <stdlib.h>

int main ()
{
char string[100]; /* string até 99 caracteres, do 0 (sem valor) ao 99 */
int i, cont;
printf ("\n\nDigite uma frase: ");
gets(string); /*Le a string */
printf("\n\nFrase digitada:\n%s", string);
cont = 0;
for (i=0; string[i] != '\ 0'; i=i+1)
{
if (string[i] == 'c') /*se for a letra c*/
cont = cont +1; /* Incrementa o contador de caracteres*/
}
printf("\nNumero de caracteres c = %d \n\n", cont);
system ("PAUSE");
return(0);
}
[\code]



!= significa diferença, ele testa se o atributo A é diferente do B: se A != B (se A é diferente de B).
'\ 0' é o último caractere de uma string, ou seja uma palavra ou frase. Em C toda cadeia de caractere (string) tem o último caractere '\ 0' para que o compilador possa saber onde termina a string;

O código acima testa todos os caracteres da frase ou palavra e conta quantas letras c tem até encontrar o fim da string: '\ 0'


3. Re: Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 24/12/2012 - 09:00h

Como o amigo aí de cima respondeu, o caracteres \ 0 representa o fim de frase.

No caso do for(), não precisava nem usar o != '\ 0'. A sintaxe do for é assim:


for ( variável ; condição ; interação ) { }


Qualquer condição é avaliada como FALSE caso seja zero (como o final de uma string.) Então o código poderia ser assim:


for ( i = 0; string[i]; i++ ) { }


Exemplo completo:


#include <stdio.h>

int main ( void )
{
register int i;

char *str = "Viva o Linux";

for ( i = 0; str[i]; i++ )
printf ( "%c", str[i] );

printf ( "\nCaracteres: %d\n", i );

return 0;
}



A parte da condição no 'for' é avalida toda vez que o loop é executado, então, quando a condição chegar no caractere terminador da string (NULL-char - ou simplesmente ZERO), o loop para.


for ( i = 0; string[i]; i++ ) {}

for ( i = 0; string[i] != 0x0; i++ ) {}

for ( i = 0; string[i] != '\ 0'; i++ ) {}

# Os três estão corretos e vão fazer a mesma coisa


Deu pra entender?

Qualquer coisa posta denovo,
[]'s
Enzo Ferber



4. Re: Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/12/2012 - 15:00h

Só não entendi esse espaço que todos colocaram entre a "\" e o "0". O certo em C é '\0'.


5. Re: Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

marcelo pereira da silva junior
marcelodp2

(usa Outra)

Enviado em 24/12/2012 - 21:02h

Galera muito obrigado pelas resposta, deu pra entender sim e até pra saber mais com a dica do EnzoFerber e paulo1205 quanto ao espaço entre o "/" e o "0" é porque quando eu colocava o código no post e publicava ficava so as duas aspas ""
era assim, eu digitava:

"\ 0" junto e dava um erro, tipo, agora ta aparecendo {TTEXTO}, antes so aparecia ""


não percebi que tinha digitado errado ai separei pra poder aparecer no post
sacas?? ^^

e novamente.. muito obg galera



6. Re: Não entendo uma linha de um código em C, alguém ai pode ajudar? [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 25/12/2012 - 20:23h

paulo1205 escreveu:

Só não entendi esse espaço que todos colocaram entre a "\" e o "0". O certo em C é '\0'.


Pois é, tem um bug no forum do VOL. Quando eu tento postar '{TEXTO}' fica "{TTEXTO}" no post... Aí é só pegar os exemplos e retirar o espaço. Mais fácil que morder água.


*

\[i]0

*

Só colocar um [ i] entre a barra e o zero.

\ [ i] 0

Sem o espaço entre o colchete e o 'i'. Bacana esse macete aí.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts