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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: DUDA SOBRE FICHEROS EN C en: 11 Marzo 2016, 18:03 pm
Finalmente por si alguien tiene la misma duda lo solucioné asi:

Código:
int contador = 0;
while(!feof(f) && contador <= 2){

fflush(stdin);
fgets(temp,100,f);
cambio3(temp);

if(contador == 1){
printf("NUMERO:         %s                  \n\n\n\n",temp);
contador ++;
}

if(stricmp(buscador,temp) == 0){

printf(" \n\nNOMBRE:          %s                 \n", temp);
  //salto de linea en fichero
  //leer siguiente linea
contador ++;
 
}
}

rewind(f);
fclose(f);

Lo que sí la frase introducida es igual que la frase almacenada en el fichero, se imprime esa linea por pantalla y se le suma uno a contador. Luego se acaba el bucle, y vuelve a empezar y por lo tanto se hace un salto de línea, y se encuentra un if, en este if se dice que si contador es igual a 1, es decir que se ha imprimido la linea anterior(el nombre) se imprime por pantalla tambien esta, donde esta almacenado el numero. Y  se incrementa contador en 2. Como la condicion del bucle es que contador sea menor o igual que 2, se sale del bucle.

Creo que este algoritmo es bastante complejo para lo que hace, pero hace su función.

Saludoos ;D ;D
2  Programación / Programación C/C++ / DUDA SOBRE FICHEROS EN C en: 10 Marzo 2016, 19:51 pm
Hola, tengo una duda, y llevo toda la tarde rompiéndome la cabeza y sigo sin encontrar la solución.
Tengo un programa que lo que hace es:

Te pide por teclado el nombre de la persona a la que quieres buscar, esto lo guarda en un string y seguidamente accede a un fichero y compara el nombre introducido por todo el fichero hasta encontrar el nombre, una vez que encuentra el nombre, imprime este por pantalla, y seguidamente lo que tendría que hacer es hacer un salto de linea en el fichero y leer la siguiente linea, debido a que en la siguiente linea es donde tengo el numero de telefono de cada nombre, pero no se como hacer ese salto de linea con el cursor para leer la siguiente linea.

Alguien sabe?

Código:
void consultar(){

char buscador[100];
char temp[100];

f = fopen("Registro.txt","r");

if(f == NULL){
printf("Error al abrir el fichero");
exit(2);
}

fflush(stdin);
printf("Escribe el nombre del contacto: \n");
fgets(buscador,100,stdin);
cambio2(buscador);



while(!feof(f)){

fflush(stdin);
fgets(temp,100,f);
cambio3(temp);


if(stricmp(buscador,temp) == 0){

printf("%s  \n", temp);
  //salto de linea en fichero
  //leer siguiente linea

 
}


}

Aquí esta el código de la función.

y aquí dejo una captura de pantalla del fichero para que vean como esta estructurado y porque quiero hacer el salto de linea:

https://gyazo.com/1e4567feb3dc6c84d570828ac0b7b0d6



Muchas Gracias.
3  Programación / Programación C/C++ / Re: Duda sobre programa en C con STRINGS en: 9 Marzo 2016, 21:51 pm
Sí, he entendido que no es recomendado, pero es que en el propio ejercicio me piden que lo utilice.
4  Programación / Programación C/C++ / Re: Duda sobre programa en C con STRINGS en: 9 Marzo 2016, 16:37 pm
Muchas gracias, has sacado el tema del fflush(stdin) y me he dado cuenta de que me faltaba para vaciar el buffer antes de pedir que se introduzca la string por teclado. La he puesto y ya me funciona. MUCHISIMAS GRACIAS!

Código:
void alta(){
char auxiliar [100];

fflush(stdin);
printf("Introduce el nombre: \n");
fgets(auxiliar,100,stdin);


}

Así queda finalmente. Muchas gracias de nuevo.
5  Programación / Programación C/C++ / Re: Duda sobre programa en C con STRINGS en: 8 Marzo 2016, 21:32 pm
Entiendo, lo que quiero hacer con auxiliar es guardar la frase temporalmente para luego medir la longitud de la frase y asignar la memoria con malloc en funcion de la longitud y asi no desperdiciar memoria, pero mi problema es que cuando inicio el programa y llego a la funcion alta, no me deja introducir una frase a auxiliar con fgets sino que en vez de pararse para poder escribir el programa continua, y no tengo ni idea de porque. Muchas gracias! :)
6  Programación / Programación C/C++ / Duda sobre programa en C con STRINGS en: 8 Marzo 2016, 20:46 pm
Buenas tengo un problema.

estoy haciendo el siguiente programa y al llegar a la funcion alta no me funciona fgets para coger el string y luego poder pasarlo a un string dinamico, utilizo fgets y no gets para que si se escribe mas de la capacidad del string que no se sobrescriban datos.

Os dejo aquí el código a  ver si podeis ayudarme, está sin acabar, pero ya tengo ese problema. Gracias

Código:
//Proyecto Agenda.

#include <stdio.h>
#include <stdlib.h> //Por si utilizamos memoria dinamica para que sea mais rapido/eficiente
#include <string.h>

typedef struct{
char *nombre; //memoria dinamica para ahorrar espacio
int numero;


}datos;



void alta();
void baja();
void consultar();


int main(){

char aux[100];
int selector;

do{
printf("==========================");
printf("           MENU          ");
printf("==========================");
printf("\n");
printf("\n");
printf("Eliga una de las siguientes opciones: ");
printf("\n");
printf("\n");
printf("1- Dar de alta un contacto\n");
printf("2- Dar de baja un contacto\n");
printf("3- Consultar contactos\n");

fflush(stdin);      //limpiamos buffer por si se introduce una frase para que no se cree un bucle infinito
scanf("%i",&selector);


system("cls");  //borrar pantalla

}while(selector < 1 || selector > 3);


switch(selector){

case 1:   alta();               break;
case 2:   baja();             break;
case 3:   consultar();      break;

default: printf("ERROR"); //No es necesario este default.
}


system("pause");
return 0;
}

void alta(){

char auxiliar [100];
printf("Introduce el nombre: \n");
fgets(auxiliar,100,stdin);


}

void baja(){


}

void consultar(){


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