¿Que significa '\0' y para que sirve/se usa?

Iniciado por Aikanáro Anário, 8 Julio 2010, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Aikanáro Anário

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
Lo que faltaba en internet: http://binar10s.blogspot.com/

Akai

De hecho si te lo explica:

CitarRecuerda 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?)

Horricreu

#2
Carácter nulo.

Saludos :P

@synthesize

#3
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)



#include <stdio.h>

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


Citarserch@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)

Aikanáro Anário

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?
Lo que faltaba en internet: http://binar10s.blogspot.com/

@synthesize

Cita de: 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?

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

daniel077

#6
#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 (actionscript) [Seleccionar]
[/color]