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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 8 Abril 2018, 01:21 am
Ahora estoy confuso... Y que diferencia habria entre el codigo https://foro.elhacker.net/programacion_cc/mostrar_una_cadena_sin_especificar_su_tamano-t482323.0.html;msg2159218#msg2159218 y hacer un
Código:
#include <stdio.h>
int main(){

int c;

while((c=getchar()) && !=EOF){
      putchar(c);
return 0;

}
12  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 7 Abril 2018, 22:08 pm
Vale ya entiendo gracias
13  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 7 Abril 2018, 22:01 pm
Lo primero gracias por el code y lo segundo en el primer realloc no seria como hacer un malloc? porque al pasarle NULL se va a comportar como un malloc si no me equivoco ya que no estas reasignando memoria al pasarle NULL. No seria mejor hacer str=malloc(i+chunk) o un str=calloc(i+chunk)?
14  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 7 Abril 2018, 21:33 pm
Con fgets casis seguro que no se puede al tener que pasarle el numero de bytes
15  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 7 Abril 2018, 20:06 pm
Estaba pensando en otros lenguajes que derivan de c y se me vino a la cabeza python.
Y la idea que tengo en c en python es la funcion input en python3 y raw_input en python2, no se si es el mejor ejemplo pero el codigo en PYTHON3 seria algo asi:

Código:
while(1):
    teclado=str(input("Introduce lo que quieras: ")) #str convierte a string lo que le pasemos a input
    print(teclado)
Cada linea en python son 10 en c xD
Citar
Complicandolo un poco mas
Código:
while(1):
    teclado=str(input("Introduce lo que quieras o exit para salir: "))
    
    if(teclado=="exit"):
        break
    print(teclado)

Espero que ahora se haya entendido bien



16  Programación / Programación C/C++ / Re: Mostrar una cadena sin especificar su tamaño en: 7 Abril 2018, 18:44 pm
Citar
Puede resultar un poco confuso pero mas o menos la idea seria esta:
Código:
    #include <stdio.h>
    #include <stdlib.h>
     
    void limpiar( void ){
        system("cls||clear");
    }
     
    int main( void ){
        size_t tam_frases = 0, i;
        char **frases = NULL, salir;
     
        do {
            limpiar();
            frases = realloc(frases, (tam_frases + 1) * sizeof(char*));
            if(!frases) {
                fprintf(stderr, "\n\n *** Error al adquirir memoria ***\n\n");
                exit(1);
            }
     
            printf("\nIngrese frase....: ");
            scanf("%m[^\n]%*c", &frases[tam_frases]);
            ++tam_frases;
     
            printf("\nPara continuar \"S\" para finalizar \"N\"....: ");
            scanf("%c%*[^\n]%*c", &salir);
        } while(salir != 'n' && salir != 'N');
     
        printf ("\n Frases introducidas.....: ");
     
        for(i = 0; i < tam_frases; ++i)
            printf("\n>> %s", frases[i]);
     
        for(i = 0; i < tam_frases; ++i)
            free(frases[i]);
     
        return 0;
    }

POST del codigo de MAZUS: https://foro.elhacker.net/programacion_cc/arreglo_de_cadenas_con_memoria_dinamica_realloc_lenguaje_c-t458601.0.html;msg2090624#msg2090624
en este codigo no se especifica ningun tamaño se reserva segun se necesita para lo que el usuario teclee si mal no entendi el codigo
17  Programación / Programación C/C++ / Punteros a cadenas dinamicas en: 7 Abril 2018, 14:35 pm
-La idea que tenia que no la he podido implementar pero dudo que se pueda, es que al pedir un nombre y apellido al usuario a priori NO SABEMOS cual va a ser la longitud de stdin que teclee el usuario. En la linea del malloc puse 10 por poner como pude haber puesto 20 pero en realidad no se cuanto va a ocupar el nombre y el apellido que me ingrese el usuario por teclado no se como implementarlo de tal manera que cuando se teclee un nombre y un apellido se calcule la longitud y luego ya reservar memoria para esa longitud a parte tambien para reservar la memoria justa y necesaria para lo que me teclee el usuario y no andar a ciegas suponiendo que va ingresar un nombre y apellido de 10,20,30 etc bytes

-Como no me salio la idea hice esto que no se parece en nada a mi idea y que aun por encima no consigo hacer que funcione
Espero haberme explicado con claridad y gracias
Citar
Primera duda, porque el codigo no funciona?
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
    char *nombre,*nombre2;
    nombre=malloc(10*sizeof(char)); //reservo 10 bytes
    printf("Introduce tu nombre y apellido: ");

    fgets(nombre,9,stdin); //agrega NULL y \n si se ingresan menos caracteres
    if (nombre[strlen(nombre)-1] == '\n'){
        nombre[strlen(nombre)-1] = '\0';
    }

    printf("%s\n",nombre);

    long int longitud=(strlen(nombre)+1); //strlen no cuenta el NULL de final de cadena
    printf("%li\n",longitud);

    if(longitud>8){
       nombre2=realloc(nombre,15*sizeof(char)); //reasigno 5 bytes
       printf("%s\n",nombre);
       free(nombre2);

     }
     free(nombre);


    return 0;
}

Citar
Segunda duda, seria posible hacer la idea?

Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines