|
52
|
Programación / Programación C/C++ / append , . a un string existente
|
en: 5 Junio 2015, 17:56 pm
|
Buenas a todos en mi afan de aprender me he topado con lo siguiente tengo cantidades monetarias en string y quiero agregarles en su debido lugar un caracter espeficio como son comas y puntos pero no me explota el programa cuando lo corro pior que seria eso ? abajo dejo parte del codigo ,gracias por los consejos. char *addComma(char *szValue){ char *szReturn = NULL; char *szTemp1 = NULL; char *szTemp2 = NULL; int inLength = strlen(szValue); /* * 10000.00 -->> 10,000.00 * 9000.00 -->> 9,000.00 * * * * */ if(inLength >= 6 ){ switch(inLength){ case 7: strncpy(szTemp1,szValue, 2 ); strncat(szTemp1, ",", 1); strncat(szTemp1, szValue+3,3); strncpy(szTemp1, ".", 1); break; case 5: } } return szTemp1; }
solo importa la parte que hago strncat , strncpy
|
|
|
53
|
Programación / Programación C/C++ / copiar trozos de memoria
|
en: 1 Junio 2015, 17:20 pm
|
Buenas a tdos tngo un pequeno string y quisiera copiar parte de el a otro string se donde estan las posiciones pero con memcpy y memmove ni van bien o lo estoy haciendo mal alguien me podria dar un pequeno consejo por favor? gracias de antemano.
|
|
|
54
|
Programación / Programación C/C++ / Re: parsear un xml ,en c puro , Recomendaciones ?
|
en: 29 Mayo 2015, 14:09 pm
|
lseek(data1, 1, SEEK_CUR); lectura = read(data1,buffer, 1); if(lectura == -1 || lectura == 0){ sp_debug(("o se llego al final del fichero o hay un error de lectura")); }else sp_debug(("cantidad de bytes leidos en la lectura es : %d", lectura)); strncat(&bufferEscritura, &buffer[indice], 1); indice++; esc = write(data2, &bufferEscritura, 1); sp_debug(("bytes Escritos")); lseek(data2, 1, SEEK_CUR); }
|
|
|
55
|
Programación / Programación C/C++ / parsear un xml ,en c puro , Recomendaciones ?
|
en: 29 Mayo 2015, 11:41 am
|
hola a todos !! Disculpen a este novato que tiene este foro a mil con tatnas preguntas pero de verdad me interesa aprender y gracias a ustedes lo estoy logrando , bueno ahora lo que quiero es partsear un xml ose eleminar un tag en algun sitio dentro del documento. yo se que me haran un pregunta , despues de ver el codigo , estoy en un entorno donde solo tengo open, write ,read y close de unix el programa compila pero me da segmentation fault (core dumped ) , me pasa muy a menudo pero esta vez cuando trato de leer la cantidad de bytes con read que deberia. bueno pongo el codigo a ver si me doy a entender. este seria el xml <xml> <tag> m texyo de be ser ffgfgf fgfhfhfh hf hhf hf hf hfh gh hghg gh ghghg gh ghgh </tag> </xml>
luego el codigo en c #include <fcntl.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main(int argc ,char argv[]) { int bucle =0; char *pbuffer={'\0'}; int file = open("s.xml", O_RDONLY); if(file < 0){ printf("Error Abriendo el fichero \n"); exit(1);///salida de error }else{ pbuffer = NULL; int r = read(file, 1024); printf("cantidad de bytes leidos :\n %d", r ); close(file); pbuffer = NULL; while(sin[5+bucle ] != '<') { bucle++; } int s2 = open("copia.xml", O_WRONLY|O_TRUNC); if(s2 < 0){ printf("cantidad de bytes escritos : %d", d ); close(s2); } }///else?? }
segun la documentacion de unix ,cuando trate de leer o escribir tantos n-bytes en el o desde el buffer y tengas disponible menos eso es lo que te devolvera o me equivoco ? gracias de anteamano. igual quisiera leer una estructura completa pero esta fuera del scope ahora me preocupa ese error.
|
|
|
56
|
Programación / Programación C/C++ / Como manejar un Buffer de 11000 caracteres ?
|
en: 27 Mayo 2015, 05:00 am
|
Buenas a todos !!! tengo una duda teorica estoy recibiendo un buffer que tienes mas 11000 caracteres pero el maximo de buffer que puedo leer es de 8000 caracteres o valores y me gustaria saber que manera es eficiente y efectiva para poder recibir ese buffer ? solo es teoria si le sale algo practico esta bien pero me guistaria entender esto !! modificado: #include<fcntl,h> char buffer[1024]; int main() { int fd = open("buffe.cier", O_WRONLY); if(fd < 0) { ///error }else{ ////aqui la verdad no me llega como llenar el buffer //// pense usar un while o un for para ir leyendo //// pero es un sistema empotrado ////intente leer 1024 a 1024 ////2048 a 2018 ///// y tambien el buffer completo /// 11700 pero nada ///////opiniones!!! please } return 0; }
Gracias por adelatado Mod: Obligatorio el uso de etiquetas GeSHi
|
|
|
59
|
Programación / Programación C/C++ / Re: Cadenas de caracteres , Puntero mas Dudas !!
|
en: 24 Mayo 2015, 17:58 pm
|
si te entiendo pero existe una forma de copiar el token en otra cadena use strcpy , memcpy ... y el resultado fue el mismo . pienso que es por q al final strtok devuelve el ultimo token como nulo pero tambien el hize una comparacion y nada. dime si me equivoco , tambien estoy tratando con algo como lo siguiente que si copa pero al final salen caracteres que no estan en la cadena , por que pasa eso ? mira el codigo : char datos[] ="SOLOESTO..0000000000000000000 0000000 000000000 0000.0 00000-00-10011:00:00 "; int main(){ char *b; b =(char*)malloc(1000); for(int i= 0; i < strlen(datos); i++) if( i < 10) strncat(b, &datos[i],1); cout<<b; free(b); }
Modicado while( (ptr = strtok( NULL, s2 )) != NULL ) // Posteriores llamadas strncat(s, ptr,20);
esto si funciona aunque aun me manda caracteres raros , por que ? Gracias !!
|
|
|
60
|
Programación / Programación C/C++ / Re: Cadenas de caracteres , Puntero mas Dudas !!
|
en: 24 Mayo 2015, 17:26 pm
|
ya arregle la condicion OntheCore !! Stakewinner00: le puse & por la declaracion dentro del header mira lo que dice _CRTIMP char* __cdecl __MINGW_NOTHROW strncat (char*, const char*, size_t);
a parte le hize un cambio al codigo #include <iostream> #include <cstring> #include <cstdlib.h> using namespace std; struct Campos { char campo1[10];//10 char campo2[16]; char campo3[7]; char campo4[8]; char campo5[6]; char campo6[21]; }; char datos[] ="SOLOESTO..0000000000000000000 0000000 000000000 0000.0 00000-00-10011:00:00 "; int main(){ Campos cmp1; memset(&cmp1, 0x00, sizeof(Campos)); char token2[2000]; char *token = strtok(datos , " "); while(token != NULL) { cout << " "<<endl<< token; /////AQUI strcat(token2, token ); token=strtok(NULL, " "); strcat(token2, token ); //// AQUI .... } cout <<token2; cout<< " token : \n"<<token<<endl; cout << "\niteraciones ----------------------------------------"; for(int iteraciones= 0; iteraciones < 11; iteraciones++) { if(iteraciones < 11) { strncat(cmp1.campo1,token[iteraciones], 1);////en esta iteracion solo quiero copiar un caracter cout << cmp1.campo1; } } }
Me asegure de darle 2000 campos para ver si no falla pero falla como quiera.
|
|
|
|
|
|
|