Autor Tema: Como funciona un string?  (Leído 2335 veces)

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

Desconectado zira

  • PIC10
  • *
  • Mensajes: 6
Como funciona un string?
« en: 25 de Julio de 2008, 08:44:46 »
Hola amigos de todopic, nuevamente pidiendo su ayuda.....
Estoy trabajando en un proyecto para la universidad y la verdad hay algo, quizas para uds sea demasiado básico, pero que yo no logro entender.
Tengo q comunicar dos pics, una 16f877a con la otra 16f873a, ambas tienen conectado un lcd independiente, es decir, hay uno por cada pic. los lcd deben ser espejo, lo q se vea en uno debe verse en el otro, el q comanda los lcd es la 16f877a. Bueno el proyecto consta de varias cosas, q mas o menos las entiendo y manejo, mi problema es q debo hacer un protocolo de comunicacion via rs232 entre las dos pics y mi profesor me ha dicho q trabaje con cadenas o strings sobre todo para manejar los lcd. He buscado bastante en el foro y en internet (incluyendo la pag de PicManía by Redraven) y he encontrado varios protocolos, y mi problema y muy básico es q no entiendo como manejan los string. Cuando se envia un string de cierta longitud por ejemplo puedo preguntar por un solo caracter contenido en ese string y con ese caracter hacer algo??? tengo q ocupar la libreria string.h y si es asi para q????, son algunas de mis dudas....... quizas sean dudas muy simples pero no me dejan avanzar en mi proyecto.
Yo programo en C y entorno CCS.
De antemano muchas gracias
Saludos

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Como funciona un string?
« Respuesta #1 en: 25 de Julio de 2008, 12:51:24 »
Saludos Zira!
Un string no es otra cosa que una cadena de caracteres. Es por eso que una variable string es en realidad un vector de variable tipo char.
Por eso cuando declaras una variable string, lo que declaras es una char. Digamos que quieres recibir/enviar 10 caracteres.
Tendrías que declarar:
Código: C
  1. char dato[11];
Y pues hay muchas funciones que usan los strings, si quieres enviar datos de un pic a otro vía serial, puedes usar el comando puts, que te permite enviar los strings.
Por ejemplo, en un pic colocas:
Código: C
  1. char dato[11]="Hola Mundo";
  2. puts(dato);
Ese enviará los caracteres correspondientes a esa cadena de texto.
Luego en el otro micro colocas:
Código: C
  1. char data[11];
  2. data=gets();
  3. printf(lcd_putc,"\f%s",data);
Este recibirá los caracteres y los almacenará en la variable "data". Luego enviará los caracteres recibidos al LCD. Fíjate que coloco el "%s" para indicar que lo que voy a enviar es una string. Si quieres usar un sólo caracter, pues tienes varias opciones:
- Usar un índice para el vector, para indicar cuál caracter vas a enviar.
- Usar apuntadores.
Lo del índice, que es más sencillo, sería por ejemplo si quieres enviar sólo el tercer dato recibido, entonces harías:
Código: C
  1. char data[11];
  2. int index;
  3. data=gets();
  4. index=2;
  5. printf(lcd_putc,"\f%c",data[index]);
Coloco un 2 porque el primer dato sería 0, luego 1, y 2 sería el tercer dato. Y fíjate que ahora cambio el "%s" por "%c" para indicar que enviaré al LCD un caracter.
Bueno espero haberte ayudado un poco. Recuerda siempre consultar también el manual de CCS, es muy útil.
Cualquier cosa avisas si no me expliqué bien, y no olvides ir subiendo tus avances.
Nos leemos!  :mrgreen:
« Última modificación: 25 de Julio de 2008, 14:16:21 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Como funciona un string?
« Respuesta #2 en: 25 de Julio de 2008, 14:12:54 »
Muy bonita tu explicación Firepic, tienes ese don para explicar las cosas de unas forma muy grata y sencilla de comprender.

Tal vez me este salteando algo, pero en la linea:

Código: [Seleccionar]
char dato[10]="Hola Mundo";

No deberia ser:

Código: [Seleccionar]
char dato[11]="Hola Mundo";

Por el caracter nulo necesario al final de la cadena. Nunca he probado que sucede con puts cuando la cadena no esta bien definida, sería cuestión de probar. Tal vez cuando termine con estos benditos examenes de la universidad.  :?

Saludos!
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Como funciona un string?
« Respuesta #3 en: 25 de Julio de 2008, 14:19:31 »
Qué tal Gonzalo! Exámenes en la universidad! Con razón te he visto poco por acá.
Gracias por el cumplido. Aunque vos tienes el mismo don pero mucho mejor, porque sabes más!  :P
Y sí, tienes razón, se me escapó esa!  :D Gracias por la corrección! Ya hice la modificación en el mensaje anterior.  :)
Un cordial saludo, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Como funciona un string?
« Respuesta #4 en: 25 de Julio de 2008, 15:12:29 »
Hola zira! q tal?
Te cuento... un string en C, no es mas que un arreglo de caracteres que finaliza en un caracter nulo. Osea, un vector cuyos elementos son caracteres. (en realidad son numeros, que despues lo imprimas como caracter es otro asunto).
Por ejemplo... si queremos almacenar un "hola", lo podemos hacer asi:
Código: [Seleccionar]
char palabra[]="hola";Que es lo mismo que:
Código: [Seleccionar]
char palabra[5]={'h','o','l','a','\0'};Cuando ponemos comillas, el compilador solo pone el caracter nulo al final. Entonces, cualquier funcion q trabaje con strings, va a trabajar los caracteres uno por uno (o no, depende de la funcion) hasta encontrar el caracter nulo.
Ahora... como ya sabemos, un arreglo (o vector) es un puntero al primer elemento del mismo. Por lo tanto, en el ejemplo, la variable palabra no es mas q un puntero al primer elemento del arreglo.
Muchas funciones de strings piden un puntero... por eso nosotros le pasamos la variable directamente (la cual ya es un puntero de por si).

Espero q esto te aclare un poco tus dudas... Cualquier manual o libro de C estandard trata estos temas, pegale una leida. Y para comprender mejor te recomiendo hacer unos ejercicios, como por ej, hacer una funcion que inverta la palabra (q escriba "aloh" en lugar de "hola"), o una funcion q copie un string caracter por caracter en otro arreglo.

Suerte con eso, cualquier duda consultanos ;)

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado zira

  • PIC10
  • *
  • Mensajes: 6
Re: Como funciona un string?
« Respuesta #5 en: 26 de Julio de 2008, 02:50:55 »
Muchisimas gracias por sus respuestas ahora tengo clarisimo el concepto, podré continuar con mi proyecto.
Saludos.
Bye

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Como funciona un string?
« Respuesta #6 en: 26 de Julio de 2008, 03:12:02 »
cuando quieras, suerte con tu proyecto ;)

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Como funciona un string?
« Respuesta #7 en: 26 de Julio de 2008, 13:32:51 »
Qué bien tengas ya aclarado todo. Exito con tu proyecto!!
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web