elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Varias dudas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Varias dudas  (Leído 1,588 veces)
n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
[C] Varias dudas
« en: 25 Febrero 2017, 20:32 pm »

Buenas tardes gente, tengo algunas dudas básicas con programación en C, las ordenaré.

1) Preciso alguna función o alguna forma para convertir una variable de tipo caracter en entero, y luego viceversa. El caso es que tengo un caracter, el cual preciso su codigo ASCII como valor en una variable, realizar algo con ese numero, como restar o sumar, y luego convertir el resultado a caracter nuevamente.

2) Al trabajar con archivos utilizo las funciones fwrite y fread, pero al escribir en archivos de textos por estas funciones, luego al ir a la raiz y abrirlos con un reader veo que guarda basura. Solo lo puedo leer correctamente si lo leo con fread desde el algoritmo. Alguno sabe como puedo solucionar esto?

3) Qué libro o apunte me recomiendan para aprender C en profundidad. Ultimamente me estaba manejando con Fundamentos de Joyanes, pero tiene varios errores y su explicación no es muy convincente. Alguno para recomendar?


Gracias!

EDIT: Agrego una 4 duda.

4) Quiero generar numeros aleatorios en C, estuve leyendo y se que es mediante las funciones rand() y srand(), pero no logro que cambie el numero en cada ejecución, les adjunto el codigo que hice.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
    int n=0;
    srand(time(NULL));
    n=(rand() % 10);
    printf("%d",n);
    return;
    }


« Última modificación: 25 Febrero 2017, 22:38 pm por n-utz » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Varias dudas
« Respuesta #1 en: 26 Febrero 2017, 02:00 am »

Citar
1) Preciso alguna función o alguna forma para convertir una variable de tipo caracter en entero, y luego viceversa. El caso es que tengo un caracter, el cual preciso su codigo ASCII como valor en una variable, realizar algo con ese numero, como restar o sumar, y luego convertir el resultado a caracter nuevamente.

el char puede ser tratado como numero, porque a nivel binario eso es... solo restale la posición del primero numero (cero) así si es 0 será 0, si es otro será ese numero

así que puedes hacer

Código
  1. char num  = '8';
  2. int a = num - '0';
  3. printf("num = %d", a);

para convertir int a char es simplemente hacerlo digito por digito, sumandole '0'

Citar
2) Al trabajar con archivos utilizo las funciones fwrite y fread, pero al escribir en archivos de textos por estas funciones, luego al ir a la raiz y abrirlos con un reader veo que guarda basura. Solo lo puedo leer correctamente si lo leo con fread desde el algoritmo. Alguno sabe como puedo solucionar esto?

al usar fwrite imprime caracteres tipo char, ya que serán correctos a nivel binario, si imprimes de tipo int, se imprimirá como ese numero en binario y fallará (si escribes un int de valor 64 verás que es @ debido a que es su ascii)

Citar
4) Quiero generar numeros aleatorios en C, estuve leyendo y se que es mediante las funciones rand() y srand(), pero no logro que cambie el numero en cada ejecución, les adjunto el codigo que hice.

es raro, ese codigo debería darte un numero diferente cada ejecución... por cierto, el return del int siempre debe ser 0 a menos que sepas para qué usarás algo diferente


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
Re: [C] Varias dudas
« Respuesta #2 en: 26 Febrero 2017, 03:14 am »

el char puede ser tratado como numero, porque a nivel binario eso es... solo restale la posición del primero numero (cero) así si es 0 será 0, si es otro será ese numero

No me quedó muy claro, te explicaré específicamente lo que quiero hacer.

Tengo char caracter='a';

Suponemos el valor ASCII de 'a' es 97, ahora yo a ese valor quiero por ejemplo, sumarle 10, que quede 107 y guardarlo en una variable caracter para representar el valor ASCII de 107.

No me quedó claro eso de sumar 0 y restarle 0 en caracter, lo hice y me dio basura.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Varias dudas
« Respuesta #3 en: 26 Febrero 2017, 03:24 am »

Suponemos el valor ASCII de 'a' es 97, ahora yo a ese valor quiero por ejemplo, sumarle 10, que quede 107 y guardarlo en una variable caracter para representar el valor ASCII de 107.

Código
  1. char caracter='a';
  2. caracter = caracter + 10;
  3. printf("%c",caracter);

eso imprimirá 'k' que es lo esperado

lo que te digo es por ejemplo

Código
  1. int q = 0;
  2.    scanf("%i", &q);
  3.    char num = q + '0';
  4.    printf("%c", num);

num será el ascii correspondiente al simbolo del digito numerico introducido
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines