Article View: es.comp.os.linux.programacion
Article #828Re: Ayuda con punteros [C]
From: AnimAlf
Date: Wed, 30 Aug 2006 14:50
Date: Wed, 30 Aug 2006 14:50
116 lines
4755 bytes
4755 bytes
Ahhh! Estoy leyendo en google i veo que no se publicó ninguna
respuesta mia :(( no estiendo.
La reenvio. Y gracias a todos por la ayuda :))
El dc 23 de 08 del 2006 a les 11:53 +0000, en/na Claudio va escriure:
> Esto mejor se pone como strcpy (tmpStr, tmpStr+1)
> Y la función strcpy exige que las cadenas no tengan
> partes comunes, no deberías usarla en ese caso.
Soy muy desconocedor de tema, siempre optenia un desagrable violación
de
segmento
> Además tal y como lo pones es ineficiente porque
> haces varios strcpy, cuando en realidad basta uno.
>
> Como lo que te pasan es un char **flujo, lo fácil debe ser
> cambiar *flujo: while (*flujo && *flujo==' ') *flujo++;
> algo así.
grácias, tras hoy, todo esto me empieza a parecer menos abstracto (lo
de
los desplazamientos por memoria)
El dc 23 de 08 del 2006 a les 11:04 +0200, en/na Pascal Bourguignon va
escriure:
> AnimAlf <AnimAlf@engendro.sytes.net> writes:
>
> > Hola,
> >
> > ¿Cómo puedo solucionarlo?
>
> Dividiendo para conquistar. En lugar de hacer todo en una sola
> función, haga solo una parte más simple.
Muchisimas grácias. Me va a servir mucho más que toda la teoria que
por
muchas veces que me repita a mi mismo, no logro comprender.
> /* Te queda como ejercicio: añadir un parametro const char* junk a las
> funciones string_trim, string_trim_left y string_trim_right, y
hacer
> que quiten cualquier caracterio en la cadena junk, no solo
espacios.
> Así podremos hacer:
>
> string_trim("#_","#______cadena______#") --> "cadena" */
>
>
> /* Y si el tema de la gestión de memoria ocure, vease:
Vale :))
Como siempre primero me vuelvo loco intentando hacer como lo haría en
Pascal ... y despues de perder los nervios i no encontrar algo similar
al 'in' de pascal, pués función nueva.
me hubiese gustado poder haber echo algo como if (c in [str])
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdbool.h>
bool en (char *grupo, char c){
int i;
for (i=0; i<strlen(grupo); i++) {if (grupo[i]==c){return true;}};
return false;
}
const char* string_trim_left(const char* string, char* junk){
while(en(junk,(*string))){string++;}
return(string);
}
char* string_substring(const char* string,int start,int end){
char* result=(char*)malloc(end-start+1);
strncpy(result,string+start,end-start);
result[end-start]='\0';
return(result);
}
const char* string_trim_right(const char* string, char* junk){
const char* end=string+strlen(string);
do{
if(string==end){ return("");}
end--;
}while(en(junk,(*end)));
return(string_substring(string,0,end-string+1));
}
const char* string_trim(const char* string, char* junk){
return(string_trim_right(string_trim_left(string,junk),junk));}
int main(){
char * junk = "#_ ";
const char* cadena[]={
"",
"x"," x","x "," x ",
"xyz"," xyz","xyz "," xyz ",
"x y z"," x y z","x y z "," x y z ",
" cadena ",
"#______cadena______#",
" cad ",
"# cadena ",
" cadena #",
0};
int i;
for(i=0;cadena[i];i++){
const char* result;
printf ("\n\nDEBUG: Antes:\t[%s]\n",cadena[i]);
result=string_trim(cadena[i], junk);
printf ("DEBUG: Despues:\t[%s]\n",result);}
return(0);
}
Technical Details
Message-ID:
<1156949426.036392.49600@74g2000cwt.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!74g2000cwt.googlegroups.com!not-for-mailReferences:
<1156305914.21671.6.camel@general.engendro.sytes.net>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,b5fe46047b709e60 X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!74g2000cwt.googlegroups.com!not-for-mail From: "AnimAlf" <AnimAlf@engendro.sytes.net> Newsgroups: es.comp.os.linux.programacion Subject: Re: Ayuda con punteros [C] Date: 30 Aug 2006 07:50:26 -0700 Organization: http://groups.google.com Lines: 117 Message-ID: <1156949426.036392.49600@74g2000cwt.googlegroups.com> References: <1156305914.21671.6.camel@general.engendro.sytes.net> NNTP-Posting-Host: 80.32.76.249 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1156949431 7225 127.0.0.1 (30 Aug 2006 14:50:31 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 30 Aug 2006 14:50:31 +0000 (UTC) In-Reply-To: <1156305914.21671.6.camel@general.engendro.sytes.net> User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); es-ES; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: 74g2000cwt.googlegroups.com; posting-host=80.32.76.249; posting-account=ocQ8Qg0AAAC5mV8rLV18ktpgivZSQbhs