Autor
|
Tema: copiar caracteres uno a uno (Leído 8,822 veces)
|
bash
Desconectado
Mensajes: 258
|
Buenas a todos !! tengo una duda , tengo un par de horas tratando de hacer algo con un string es quiero copiar caracter a caracter usando varoas funciones pero nada de funcionar le pondre lo que he hecho. #include<cstdlib> #include<cstring> #include<iostream> using namespace std; void copiar(){ char *szBuffer1 = "mi cadena es esta "; char *szCopia; char caracterAcaracter[30]; ///la plataforma en la que lo uso no tiene malloc memset(szCopia, 0x00, strlen(szBuffer1)); for(int i = strlen(szBuffer1)); i < -1 ; i--) { caracterAcaracter[i] = szBuffer[1]; strcat(szCopia, szBuffer1[i]); strcpy(szCopia, szBuffer1[i]); ///igual pasa con los que piden n caracateres para cpiar /// no me deja por que el segundo argumento pide const char * ///strtok no se bien si alguien me aconseja si me conviene } }
podrian darme algun consejo o decirme donde podria leer mas sobre lo string y caracteres , gracias y discuplen la molestia .
|
|
|
En línea
|
gracias por responder mis dudas
|
|
|
Stakewinner00
|
Sobra un paréntesis en el for, la variable szBuffer no existe... Como quieres que funcione si ni compila?
|
|
|
En línea
|
|
|
|
bash
Desconectado
Mensajes: 258
|
fue un error digintandolo aqui , ayer tenia sueno, lol , pero de todos modos cuando trato de usar strcpy o strcat me da u error ya que el dato no es constante ,y uso el indice para copiar el programa estalla !! tambien estoy he intentando esto: #include<cstring> #include<iostream> #include<stdlib.h> #include<ctime> using namespace std; int main(){ char *szBuffer ={"est buffer es enorme y solo quiero<aqui> cargar una parte del "}; int inlen = 0; while(strstr(szBuffer, "<aqui>")!=NULL){ inlen++; } char *szif; for(int i = 0 ; i < inlen; i++ ) { memset(szif, szBuffer[i], inlen); cout << szif[i]<<endl ; } }
y tambien intente este #include<cstring> #include<iostream> #include<stdlib.h> #include<ctime> using namespace std; int main(){ char *szBuffer ={"est buffer es enorme y solo quiero<aqui> cargar una parte del "}; int inlen = 0; char *xc = strtok(szBuffer, " "); while(strtok(xc, " ")!=NULL){ inlen++; } char *szif; for(int i = 0 ; i < inlen; i++ ) { memset(szif, szBuffer[i], inlen); cout << szif[i]<<endl ; } }
/* strtok example */ #include <stdio.h> #include <string.h> #include <iostream> using namespace std; int main () { char str[] ="- caracter de ejemplo buscado espacios."; char *szBuffer; memset(szBuffer, 0x0, 2000 ); char *pch = strtok(str, " "); while(pch != NULL) { strcat(szBuffer, pch); strcat(szBuffer, "\n"); pch= strtok(NULL, " "); cout <<szBuffer <<endl; } return 0; }
como podria usar memset en puntero de dos dimensiones !! y me da core dmped y que inclui ctime lo pueden obviar por favor y como dije anteriormente strcpy , strncpy, strcat , strncat solo aceptan el segundo argumento const char * y la verdad seguire intentandolo ,gracias gracias
|
|
« Última modificación: 23 Mayo 2015, 14:52 pm por bash »
|
En línea
|
gracias por responder mis dudas
|
|
|
Peregring-lk
Desconectado
Mensajes: 50
|
Vamos a ver: #include <cstring> #include <iostream> #include <stdlib.h> #include <ctime> using namespace std; void copiar() { char const *szBuffer1 = "mi cadena es esta"; // No necesitas un espacio al final. Ya hay un \0 implícito. char *szCopia; char caracterAcaracter[30]; // la plataforma en la que lo uso no tiene malloc. memset(szCopia, 0x00, strlen(szBuffer1)); strcpy(szCopia, szBuffer1); strcpy(caracterAcaracter, szBuffer1); }
Ésto debería funcionarte. La función `strcpy` recorre la segunda cadena carácter a carácter, hasta que encuentra un '\0', y la va copiando en la primera. Lo que me gustaría saber es para qué quieres la variable `szCopia` si después no la devuelves. Por otro lado, si trabajas con C++, podrías hacer sencillamente: void copiar() { char const* szBuffer1 = "mi cadena es esta"; string copia1(szBuffer1); string copia2(szBuffer1); }
|
|
« Última modificación: 23 Mayo 2015, 17:49 pm por Peregring-lk »
|
En línea
|
|
|
|
bash
Desconectado
Mensajes: 258
|
tienes razon con c++ podria ser mas facil , pero tengo que usar c y estoy limitado ne recurso por eso quiero saber si alguien me da un pequeno tip , he intentado pero todo ha sido en vano , no pongo todo el codigo pero creeme todo esos bufferes tienen motivo de estar ahi , quiero parsear un xml y solo quiero obtener una subcadena o quiero "chop" y solo sacar una parte por que a donde la voy a pasar (dispositivo empotrado ) tiene poca memoria y quiero recortar a ver si pueder reducir el tamano , lo digo para dar mas info de lo que quiero hacer.
ahora estoy pensando cortar palabra por palabra , me recomienda usar strtok con un puntero de dos dimensiones ? tengo el tamano maximo de caracteres que quiero capturar "
por cierto strcpy () es strcpy(char * c, const char * dd); el compilador me da un error cuando trato de compilar con una buffer o char * no constante , es lo mismo con strcat y derivados de ellos .
Gracias
|
|
« Última modificación: 23 Mayo 2015, 16:47 pm por bash »
|
En línea
|
gracias por responder mis dudas
|
|
|
Stakewinner00
|
y porque el char* de origen no puede ser constante?
|
|
|
En línea
|
|
|
|
Peregring-lk
Desconectado
Mensajes: 50
|
Perdón, perdón. Fallo mío. Los literales de cadena ("cadena"), tiene tipo `const char*` por defecto. Me equivoqué escribiendo aquí (ya está corregido). Y si estás programando en C, programa en C y no incluyas cabeceras de C++, etc: #include <string.h> void copiar() { char const *szBuffer1 = "mi cadena es esta"; // No necesitas un espacio al final. Ya hay un \0 implícito. char *szCopia; char caracterAcaracter[30]; // la plataforma en la que lo uso no tiene malloc. strcpy(caracterAcaracter , szBuffer1 ); }
|
|
|
En línea
|
|
|
|
bash
Desconectado
Mensajes: 258
|
Bueno es c y un c++ recortado !! jajajaja
gracias , aunque lo que quiero es por ejemplo
strcpy(caracterAcaracter, szBuffer1[1]); por ejemplo jajajja si es dificil
|
|
« Última modificación: 23 Mayo 2015, 18:10 pm por bash »
|
En línea
|
gracias por responder mis dudas
|
|
|
bash
Desconectado
Mensajes: 258
|
estaba viendo de un tema pasado sobre caracteres y cadena en c estoy probando algo de c++ aunque no me han aprobado en el trabajo para hablar ahora por que el programa estalla ? //this is cpu intesive function char *szDropToken(char * szBufferCompleto){ string szBuffer[2000]; int len= strlen(szBufferCompleto); int inlen = 0; char *szRet; while( len >inlen ) { char *pch =strtok( szBufferCompleto , " "); while(NULL, " "){ pch = strtok(NULL, " "); szBuffer[len] = pch; if(strstr(szBuffer[inlen].c_str(), "<ArhivoTransacciones>") == NULL ) { inlen++; continue; }else break; } for(int i; i < inlen ; i++) { strcat(szRet, szBuffer[i].c_str()); } retunr szRet; }
aun explota el programa
|
|
|
En línea
|
gracias por responder mis dudas
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Estan trabajando con punteros indefinidos: char *szRet; char *szCopia;
Hay que asignarle un valor llamando a malloc o a new.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Caracteres a-z A-Z 0-9
Programación Visual Basic
|
Kizar
|
5
|
2,644
|
22 Enero 2006, 17:43 pm
por Kizar
|
|
|
copiar caracteres en una cadena
« 1 2 3 »
Programación C/C++
|
mapers
|
22
|
22,945
|
9 Julio 2010, 05:15 am
por mapers
|
|
|
Alguien sabe buscar palabra de x caracteres y los demás caracteres a continuació
Programación Visual Basic
|
usuario oculto
|
3
|
5,348
|
2 Agosto 2010, 18:36 pm
por Psyke1
|
|
|
[C] Copiar arreglo de caracteres con Operador Igual
Programación C/C++
|
AlbertoBSD
|
8
|
4,536
|
25 Junio 2016, 11:40 am
por fary
|
|
|
Copiar caracteres
Programación C/C++
|
Dato Vagabundo
|
3
|
2,612
|
5 Octubre 2017, 03:51 am
por engel lex
|
|