Autor Tema: Problemas con variables CHAR  (Leído 1632 veces)

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

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Problemas con variables CHAR
« en: 06 de Julio de 2009, 07:56:38 »
Buenas;

estoy con el proyecto de fin de carrera, estoy escribiendo en una SD en formato FAT con un 18f452.

El problema es que cuando digo que escriba la variable, depende del tratamiento que tenga esta lo hace bien o lo hace mal.
Es decir, si tengo una variable:

char temps[14]="1234567890abc";  lo hace bien, en canvio:


char temps[14];

for (i=0;i++;i>12) {    //Reiniciem el vector temporal
         temps='0';
     }
     temps[6]=',';        //Posem la coma vector temporal
     temps[13]=0x09;      //Tabulador

no lo hace bien...


algun "help please".

Muchas gracias

Anglès (Girona)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Problemas con variables CHAR
« Respuesta #1 en: 06 de Julio de 2009, 08:10:56 »
Hola arcadi

Fíjate que tu string necesita un caracter adicional para que el tratamiento estándar de strings en C sea correcto y que es el lugar donde ubicar el carácter "fin de string" o sea el 0x00

Tu declaración de temp[14] permite almacenar datos desde [ 0 ] hasta [ 13 ] o sea 14 caracteres. Si el último de ellos los "cargas" con 0x09 en tmp[ 13 ] = 0x09 tu string está sin "finalizar" y cualquier función estandar de C que intente tratar con él no sabrá donde se acaba.

O haces tmp[ 13 ]= 0x00 o amplía a tmp[ 15 ] y haces tmp[ 14 ]=0x00;

Fíjate que en char temps[ 14 ]="1234567890abc"; el caracter 'c' está en temp[ 12 ] y que el compilador a puesto automáticamente un 0x00 en temp[ 13 ].

Por ahí pueden ir los tiros.  :mrgreen:

Nota: Separo los [ ] de su interior para que el editor del Foro no se haga la "picha un lío"  :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con variables CHAR
« Respuesta #2 en: 06 de Julio de 2009, 16:06:08 »
Código: [Seleccionar]
Buenas;

estoy con el proyecto de fin de carrera, estoy escribiendo en una SD en formato FAT con un 18f452.

El problema es que cuando digo que escriba la variable, depende del tratamiento que tenga esta lo hace bien o lo hace mal.
Es decir, si tengo una variable:

char temps[14]="1234567890abc";  lo hace bien, en canvio:


char temps[14];

for (i=0;i++;i>12) {    //Reiniciem el vector temporal
         temps[i]='0';
     }
     temps[6]=',';        //Posem la coma vector temporal
     temps[13]=0x09;      //Tabulador

no lo hace bien...


algun "help please".

Muchas gracias

Cito tu mensaje como código porque, como dice Diego, partes de él fueron consideradas como formato de texto del foro.

Esta parte de código creo que está mal:

Código: [Seleccionar]
for (i=0;i++;i>12) {    //Reiniciem el vector temporal
         temps[i]='0';
     }

El orden del for y el límite debería ser así:

Código: [Seleccionar]
for (i=0;i<14;++i) {    //Reiniciem el vector temporal
         temps[i]=NULL; //Graba 0x00 en todo el vector temporal
     }