hola bueno lo que quiero hacer es que el usuario ingrese: hola y yo obtenga 10411110897 (código ascii de hola) y pueda sumar restar multiplicar números a esa cadena. Me trabo mucho por que el usuario ingresa texto y yo quiero convertir ese texto a un numero gracias por la ayuda :D
deschattenmann, te recomendaria leer las Reglas del subforo (https://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html)
Si pones algo del avance que llevas hecho seria mas facil para nosotros poder ayudarte.
Salu10.
Pues no llevo mucho la verdad pero bueno esto es lo que tengo:
#include <stdio.h>
main()
{
char cad[] = "hola";
int i = 0;
while (cad[i] != '/0')
{
printf("%d", cad[i]);
i++;
}
}
esto me imprime la cadena que quiero, pero si intento algo como:
x = cad + 10;
Ya no funciona la cosa...
deschattenmann, usa el boton modificar para no hacer doble post
En cuanto el codigo, te sugiero que te pases por este post por algunas cuestiones
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
Tendrias que hacer lo siguiente...
x = cad[i] + 10;
Salu10.
Creo que no me di a entender bien :S por ejemplo cuando quier sumar 10 es a 10411110897 ósea 10411110897 + 10, quiero sumar 10 a TODA la cadena no a un solo carácter
deschattenmann, ahi te dejo un codigo que hace lo que creo que entendi que querias
Igual fijate, cualquier error que veas no dudes en postearlo
/* by nicolas_cof bajo efectos de fernet ( http://es.wikipedia.org/wiki/Fernet ) */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *itoa( int value, char *result, int base )
{
if ( base < 2 || base > 36 )
{
*result = '\0';
return result;
}
char* ptr = result, *ptr1 = result, tmp_char;
int tmp_value;
do
{
tmp_value = value;
value /= base;
*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
}
while ( value );
if ( tmp_value < 0 ) *ptr++ = '-';
*ptr-- = '\0';
while ( ptr1 < ptr )
{
tmp_char = *ptr;
*ptr--= *ptr1;
*ptr1++ = tmp_char;
}
return result;
}
int main( void )
{
char cad[] = "hola";
int i,
lencad = strlen( cad );
char *tmp[lencad];
char *cadnum;
unsigned long x;
cadnum = calloc( 25, sizeof( char ) );
for ( i = 0; i < lencad; ++i )
{
tmp[i] = calloc( 4, sizeof( char ) );
tmp[i] = itoa( cad[i], tmp[i], 10 );
cadnum = strncat( cadnum, tmp[i], strlen( tmp[i] ) );
}
x = atol( cadnum );
printf( "cadnum:%s | x:%ld | x + 10:%ld \n", cadnum, x, x + 10 );
for ( i = 0; i < lencad; ++i )
free( tmp[i] );
free( cadnum );
return 0;
}
http://www.strudel.org.uk/itoa/
Otra version usando la funcion sprintf() :P
/* by nicolas_cof bajo efectos de fernet ( http://es.wikipedia.org/wiki/Fernet ) */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( void )
{
char cad[] = "hola";
int i,
lencad = strlen( cad );
char *tmp[lencad];
char *cadnum;
unsigned long x;
cadnum = calloc( 25, sizeof( char ) );
for ( i = 0; i < lencad; ++i )
{
tmp[i] = calloc( 4, sizeof( char ) );
sprintf( tmp[i], "%d", cad[i] );
cadnum = strncat( cadnum, tmp[i], strlen( tmp[i] ) );
}
x = atol( cadnum );
printf( "cadnum:%s | x:%ld | x + 10:%ld \n", cadnum, x, x + 10 );
for ( i = 0; i < lencad; ++i )
free( tmp[i] );
free( cadnum );
return 0;
}
Salu10.
Sii eso era lo que quería hacer, pensé que seria mas fácil pero pues a entender el código se ha dicho... Muchas gracias nicolas_cof
deschattenmann, de nada! para eso estamos compañero ;)
Salu10.