[C con Clase] Error en If

José María Nevárez chemanev en gmail.com
Mie Mayo 27 22:08:11 CEST 2009


Me ha funcionado usar if( Tok[0]!=' ' && Tok[0]!='\t' )

Muchas gracias.
Saludos.



El 25 de mayo de 2009 11:37, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Chema,
>
>
> José María Nevárez wrote:
>
>> Hola a todos,
>> tengo el siguiente problema, al escribir las siguientes lineas,
>>
>> if ((Tok!=" ") && (Tok!="\t") && (Tok!="  ")  && (Tok!="\r") &&
>> (Tok!="\0"))
>>     Vaciar(Tok,T_t,NLinea);
>>
>> cuando el valor de Tok es = a "\r" no deberia de cumplirse el if,
>> sin embargo sigue ejecutando la siguiente instrucción.
>>
>>
> Si 'Tok' es una cadena de caracteres declarada así:
>
> char Tok[100];
>
> o como un puntero,
>
> char *Tok;
>
> entonces el problema es que estás comparando arrays. Ten presente que un
> array es la dirección de memoria del primer elemento. Las reglas semánticas
> entre arrays no comparan los elementos de cada uno, sino que se comparan las
> direcciones de memoria.
>
> La solución es usar la función estándar 'strcmp()' declarada en <cstring>
> (o <string.h> si usas C). Esto es,
>
> if( strcmp(Tok," ") && strcmp(Tok,"\t") && strcmp(Tok,"  ") &&
> strcmp(Tok,"\r") && strcmp(Tok,"\0") )
>
> De todas maneras, puedes ver que algunas cadenas sólo contienen un solo
> carácter, por lo que podríamos consultar cada carácter. Por ejemplo,
>
> if( Tok[0]!=' ' && Tok[0]!='\t' && strcmp(Tok,"  ") && Tok[0]!='\r' &&
> Tok[0]!='\0' )
>
>
> Espero que esto aclare la duda.
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090527/b0e0ab49/attachment.html>


Más información sobre la lista de distribución Cconclase