C/Visual C - Parsear una cadena de caracteres

   
Vista:

Parsear una cadena de caracteres

Publicado por MambaNegra (4 intervenciones) el 04/09/2008 18:22:50
Hola Gente tengo que parsear los copy usado en un sistema COBOL
y de un copy asi:

01 VARIABLES.
03 WX-COD-ERROR PIC X(08) VALUE ALL "0".
03 WZ-COD-ERROR REDEFINES WX-COD-ERROR.
05 WZ-MODULO PIC X(03).
05 WZ-NUMERO PIC X(05).
03 WX-MSG-ERROR PIC X(70) VALUE SPACES.
03 WX-FUNCION PIC X(08) VALUE SPACES.
03 WX-PROGRAMA PIC X(08) VALUE 0.
03 WX-RUTINA PIC X(08) VALUE SPACES.

tengo que hacer una salida asi:

struct {
char Wx_Cod_Error[8]
char Wx_Msg_Error[70]
char Wx_Funcion[8]
char Wx_Programa[8]
char Wx_Rutina[8]
} Variables

char Wz_Cod_Error[8]
char Wz_Modulo[3]
char Wz_Numero[5]

o asi tambien estaria bien:

struct {
char Wx_Cod_Error[8]
char Wz_Cod_Error[8]
char Wz_Modulo[3]
char Wz_Numero[5]
char Wx_Msg_Error[70]
char Wx_Funcion[8]
char Wx_Programa[8]
char Wx_Rutina[8]
} Variables

por favor que alguien me ayude... Me urge
o que alguien me diga como hago para distribuir todas las palabras de una cadena de carcteres dentro de un vector de string
ejemplo:
03 WX-COD-ERROR PIC X(08) VALUE ALL "0".

sPalabra[1]=03
sPalabra[2]=WX-COD-ERROR
sPalabra[3]=PIC
sPalabra[4]=X(08)
sPalabra[5]=VALUE
sPalabra[6]=ALL
sPalabra[7]="0".

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Parsear una cadena de caracteres

Publicado por jose (21 intervenciones) el 16/01/2009 03:04:04
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/* _cutstr : Separador de palabras */
char ** _strcut( char * text,
char delimiter,
int * total )
{

int n = 0; // ancho de palabra (lenght).
int i = 0; // contador de palabras (total).
char * tmp = text; // palabra a copiar.
char ** array = 0; // NULL.


while( 1 )
{
if( *text == delimiter ||
*text == 0 )
{

if( n > 0 )
{
i++;
array = (char**)realloc( array, i * 4 );
array[i-1] = (char*)malloc( n + 1 );
strncpy( array[i-1], tmp, n );
array[i-1][n] = 0;
}


if( *text == 0 )
{ goto end; }

tmp = text + 1;
n = -1;
}

text++;
n++;
}

end:

*total = i;
return array;
}



/* main */
void main()
{
char ** buffer; // futoro array.
int total;

// cortando palabras.
buffer = _strcut( "03 WX-COD-ERROR PIC X(08) VALUE ALL 0", 32, &total );

// sumando calificaciones.
for( int i=0; i<total; i++ )
{

// resultado.
printf( "buffer[%i] = %s ", i, buffer[i] );

//liberando memoria.
free( buffer[i] );

}

//liberando memoria.
free( buffer );

}


// si te funciona enviame un mail como respuesta gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar