Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aikanáro Anário en 8 Julio 2010, 20:31 pm



Título: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: Aikanáro Anário en 8 Julio 2010, 20:31 pm
Tengo que hacer un ejercicio que dice:
Haz un programa que te pida una palabra, la metas y te diga el numero
de letras (no vale usar ninguna funcion tipo strlen). Recuerda que el
final de cadena lo indica el caracter '\0'

Pero no explica lo de '\0'

La solucion del ejercicio es:

#include <stdio.h>
void main()
{
   char palabra[100];
   int i=0;
   printf("Mete una palabra:");
   scanf("%s",&palabra);
   for(i=0;i<100 && palabra!='\0';i++);
   printf("\n\nLa palabra %s tiene %d letras",palabra,i);
   fflush(stdin);
   getchar();
}

pero aun no entiendo

Aclaro que no es una tarea, estoy leyendo material de programacion y me interesa aprender


Título: Re: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: Akai en 8 Julio 2010, 20:37 pm
De hecho si te lo explica:

Citar
Recuerda que el final de cadena lo indica el caracter '\0'

Básicamente '\0' es el carácter que indica el final de la cadena.

No estoy muy seguro que esa solución sea... correcta, de hecho es una guarrada y me parece que no realiza lo que se pide (mal copiada, ¿quizás?)


Título: Re: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: Horricreu en 8 Julio 2010, 20:42 pm
Carácter nulo (http://en.wikipedia.org/wiki/Null_character).

Saludos :P


Título: Re: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: @synthesize en 8 Julio 2010, 20:52 pm
Analizando el for:

for(i=0;i<100 && palabra!='\0';i++);


Mientras: I es igual a 1. Mientras I sea menor que 100 Y palabra No sea \0, aumenta en 1 I

Recorres palabra[] hasta que llegas al final de la palabra, por cada letra, le suma 1 a i.



Aparte:

Intenta no usar void main, pues el sistema espera que le devuelvas algo. Una int main, y return al final del programa.

Te dejo el código corregido (Te faltaba indicar la celda en palabra)

Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.   char palabra[100];
  7.   int i=0;
  8.   printf("Mete una palabra:");
  9.   scanf("%s",palabra);
  10.   for(i=0;i<100 && palabra[i]!='\0';i++);
  11.   printf("\n\nLa palabra %s tiene %d letras",palabra,i);
  12.   fflush(stdin);
  13.   getchar();
  14. return 0;
  15. }
  16.  

Citar
serch@serch-server:~$ gcc 1.c -Wall
serch@serch-server:~$ ./a.out
Mete una palabra:sergio


La palabra sergio tiene 6 letrasserch@serch-server:~$

Consejo, lee el post de Littlehorse, sobre lo que no se debe hacer en C (Lo digo por fflush)


Título: Re: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: Aikanáro Anário en 9 Julio 2010, 00:18 am
Ok, ya entendi, era cuestion de interpretacion.

Dice el for
partiendo de x=0, incrementa x de 1 en 1 hasta el final de la cadena (lo que escribí).

Una cosa Daemon Freedom ¿como pones codigo con colores?


Título: Re: ¿Que significa '\0' y para que sirve/se usa?
Publicado por: @synthesize en 9 Julio 2010, 00:20 am
Ok, ya entendi, era cuestion de interpretacion.

Dice el for
partiendo de x=0, incrementa x de 1 en 1 hasta el final de la cadena (lo que escribí).

Una cosa Daemon Freedom ¿como pones codigo con colores?

Etiquetas geshi

Al escribir el post, lo ves es una esquina, seleccionas y buscas geshi + el lenguaje que vayas a escribir. Te saldrán 2 etiquetas, dentro de ellas, pon tu código


Título: aqui esta el programa mejorado
Publicado por: daniel077 en 23 Enero 2013, 15:53 pm
#include <stdio.h>
int main()
{
   char palabra[100];
   int i=0;
   printf("Mete una palabra:");
   gets(palabra);
   for(i=0;i< palabra;i++);
   printf("\n\nLa palabra tiene %d letras",i);
   fflush(stdin);
   getchar();
}
Código
  1.  
[/color]