Ver Mensaje Individual
  #13 (permalink)  
Antiguo 25/06/2005, 01:13
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 7 meses
Puntos: 102
Cita:
Iniciado por Eternal Idol
Tal vez podrias determinar si es un caracter valido (desde 32).
Entiendo sería seguro... ¿pero será necesario??... sería desde el 33 (el 32 es espacio) hasta el 126 (127 es DEL)???... ó hasta el 254?? ... como sea, son demasiadas comparaciones en todo caso lo mejor sería al revés ¿no? ...
Código:
int c_type(char c) {
	char i; // con lo que se comparará
	int r=1; // para regresar el valor
    for(i=0; i<33; i++) // de 0 a 33... ciclo más pequeño
	  if(c==i) { r=0; break; }
    if(r==1&&c==127) r=0; // por DEL
return r;
}
¿qué opinas??...


Cita:
Iniciado por Eternal Idol
A simple vista parece correcta, aunque no tiene la funcionalidad exacta de la funcion de C que devuelve valores menores o mayores a cero segun el orden alfabetico (local).
Encontré que sí tiene un error... si comparo "algo" con "algo_otro" me regresaría 0 mi función compararía si string2 empieza con string1 ...
Lo que mencionas... la verdad no capto del todo los valores devueltos por strcmp()... pero si se trata de devolver valores positivos ó negativos según el alfabeto.. ¿qué te parece esto?:
Código:
int strcmp(char *str1, char *str2) {
	int i, r=0;
    for(i=0; str1[i]!='\0' && str2[i]!='\0'; i++) { // Notese agregué otra condicional
	  if(str1[i] < str2[i]) { r=-1; break; } // Si el primer carácter diferente es "menor" entonces str1 va primero
	  else if(str1[i] > str2[i]) { r=1; break; } // Lo mismo pero al revés 
    }
// Pudo no haber diferencias más no significa la palabra sea la misma...
// ejemplo "ala" y "alas" .. entonces quién tenga menos carácteres va primero
    if(strlen(str1) < strlen(str2) && r==0) r=-1;
    else if(strlen(str1) > strlen(str2) && r==0) r=1;
return r;
}
Debería regresar -1 si str1 se encuentra antes (según alfabeto) que str2, 1 si es lo contrario ó 0 si son iguales... creo ahora sí es correcto .

Cita:
Iniciado por Eternal Idol
strlen funciona bien pero str1 y str2 no tienen el tamaño suficiente para contener esas cadenas
Cierto! ímbécil de mí.... gracias por la observación.


Cita:
Iniciado por Eternal Idol
Para atoi mas o menos tenes que recorrer el array de caracteres y segun la posicion usando el 10 a la potencia de la misma y restandole 48 ('0') al numero que contenga sumarlo a un total.
También muy cierto:
Código:
int atoi(char string[7]) { // Solo hasta un int (de -32768 a 32767)
	int i, n=0, tot=0, exp;
    for(i=strlen(string)-1; i>=0; i--) {
	  if(string[i]==45) n=1; // para los negativos... sería necesario un && i==0?
	  else {
		if(i==strlen(string)-1) exp=1; // 10^0=1
		else exp*=10; // 10^*
		tot+=(string[i]-48)*exp; // Almacenamos total
	  }
    }
    if(n==1) tot*=-1; // S¡ se recibió un número negativo
return tot;
}
... Hasta dónde soporta atoi()???... creo un int es más que suficiente... Estoy suponiendo el formato de la cadena es el correcto; ¿sería necesario hacer validaciones?... que los carácteres correspondan a números, que de haber el signo "-" estubiese a el principio... y creo sería todo... ¿pero cómo regresar un valor de error sí los ocupo todos ???


Cita:
Iniciado por Eternal Idol
Las funciones de texto lo siento pero solo conozco las de Windows, que yo sepa cada Sistema Operativo las implementa de diferente manera.
Vale... ni modos... me quedaré con lo que tengo... Una vez creado mi ejecutable ya no hay bronca con lo de los stándares ¿cierto?


Cita:
Iniciado por Eternal Idol
fopen puede fallar por no existir el archivo en cuestion o por carecer de permisos sobre el mismo entre otras cosas.
Pero no hay manera de encontrar cuál de esas razónes provocó el fallo?? ...

Saludos!
Edito: Una tonteria... ¿es correcto nombrar a mis funciones como las originales?? Sé que no... por obviedad
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 25/06/2005 a las 01:25