Título: Guardar una linea de enteros separados por un espacio en C Publicado por: FERNIIIIN en 6 Noviembre 2018, 19:51 pm Buenas dias/tardes/noches a todos tengo un problema en el que espero que me puedan ayudar.
Necesito guardar un serie de números enteros que están separados por un espacio en un arreglo, es decir, me dan un número N que la longitud de mi arreglo A[N] y la siguiente entrada son N números que debo guardar en A, ejemplo: 5 1 3000 466 588 57778 Mi duda es como guardarlos, si estuvieran juntos los números o los ingresaran un seguido de otro seria fácil, pero de esta forma no se me ocurre que hacer. Gracias a todo los que puedan darme unas ideas que implementar. Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: MAFUS en 6 Noviembre 2018, 20:05 pm Intenta con strtok
Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: FERNIIIIN en 7 Noviembre 2018, 00:31 am Intenta con strtok Tengo esto escrito pero no me deja avanzar en el GETS Código
Alguien me podría decir ¿en que me estoy equivocando? Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: AlbertoBSD en 7 Noviembre 2018, 01:25 am En algun punto copiaste el codigo de algun lado y no sabes que hace tal o cual linea.
Aqui un ejemplo funcional que publique hace unos dias, posiblemente copiasta algo de ahi... o alguien copio algo de ahi, publico el codigo y tu copiaste algo de ese codigo resultante en fin https://foro.elhacker.net/programacion_cc/leer_archivo_csv-t489183.0.html Código: scanf("%d %d", &N, &M); Esa linea no tiene ningun sentido, Lees algo mediante scanf, y luego usas la funcion gets, En primera tienes que usar Scanf o gets, no puedes usar los 2 asi tal cual. En segunda el gets esta mal escrito deberia de ser Código: gets (buffer); Tercera buffer NO ESTA INICIALIZADO EN NINGUN LADO. Ahora la parte de Código: strtok(*buffer,","); Tambien esta mal escrita, no lleva el *, y si quieres tealizar un tokenize mediante Espacios, deberias de usar " ", en lugar de "," Dame unos minutos y te publico tu codigo. como debe de ser que tambies es para leer, sin embargo esta mal escrita Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: AlbertoBSD en 7 Noviembre 2018, 01:59 am Salida:
Código: C:\codigos>tsss.exe Codigo Código
Saludos! Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: FERNIIIIN en 7 Noviembre 2018, 21:58 pm Salida: Código: C:\codigos>tsss.exe Codigo Código
Saludos! Muchas gracias, ayer tenia prisa y confundí el código con un ejercicio similar pero con mas entradas. Un amigo me estaba ayudando y me mando parte del código, tal vez y si lo copio, pero como tenia prisa no pudo explicarme bien que había hecho. Una ultima pregunta, ¿sabes si hay una función para pasar el valor que esta guardando el doble puntero (arreglo) a un array? Es decir, algo así como: **arreglo= arr[j] Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: FERNIIIIN en 7 Noviembre 2018, 22:19 pm Basándome en parte de lo que creaste "AlbertoBSD" yo estoy haciendo otro, para ver si soy capaz de simplificarlo. En la noche lo subo.
SALUDOS. ;D Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: AlbertoBSD en 7 Noviembre 2018, 22:28 pm Pues técnicamente el "arreglo" es un Arrglo,
Es un arreglo de apuntadores que apuntan valga la redundancia a donde estan guardados los valores leídos Si ves en las lineas Código: arreglo[i] = calloc(len+1,sizeof(char)); Siempre se hace referencia a arreglo. Tal vez lo que necesitas es un arreglo Fijo, pero al no conocer que te van a dar como N , no podras por metodos de arreglos fijos prevenir correctamente el valor de N char arreglo[N][30]; Supongamos un N = 1000 Ejemplo: Código
Salida para N = 10 Código: C:\codigos>ts1.exe Salida para N=1000 Código: Numero 961: 1 Le memoria se podria limpiar con char arreglo[N][30] = {0}; pero se me hace ineficiente hacerlo de esta forma. Saludos Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: elgilun en 8 Noviembre 2018, 02:53 am Acá se reserva memoria para la cadena de entrada y para el array de números (ints)
Código: #include <stdio.h> Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: AlbertoBSD en 8 Noviembre 2018, 04:52 am Excelente! ;-)
Ahhhh!, arreglo de Enteros. si convertirlos mediante atoi esta bien. Suponiendo que siempre sea un numero valido. La otra funcion mas rubusta es strtol(). Saludos Título: Re: Guardar una linea de enteros separados por un espacio en C Publicado por: FERNIIIIN en 9 Noviembre 2018, 21:06 pm Lamento la demora, por cierto coloco este código super básico. Hace lo mismo pero no se compara a lo que han puesto hasta ahora.
Código
|