Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Nachillo

#1
Pues intente hacer esto, es muy primitivo, Debe tener algunos fallos, pero bueno es sin utilizar strcmp de la libreria string.h



#include <stdio.h>
#include <stdlib.h>
#define N 10

int main(){
char cadena1[N];
char cadena2[N];
char aux='\n';
int i=0,j=0,k=0,l=0;

printf("Escribe algo: ");
fflush(stdin);
scanf("%s",&cadena1);
printf("Escribe otra cosa: ");
fflush(stdin);
scanf("%s", &cadena2);

for(i=0; i<N && aux != '\0'; i++){
if(cadena1[i] == cadena2[i]){
k++;
}
else{
l++;
}
aux=cadena1[i];

}

if(l == 0){
printf("Son iguales.\n");
}
else{
printf("NO son iguales");
}

system("pause");
return 0;
}

#2
Programación C/C++ / Re: Archivos en Lenguaje C
15 Agosto 2015, 19:38 PM
Muchas gracias por contestar, Si disculpe es que no sabia como usarlo, soy nuevo recién ingrese al foro ayer.

Sobre mi duda:
No el problema es que cuando agrego a una persona y la busco la encuentra, pero cuando ingreso a otra y la busco me dice que no la encuentra. En pocas palabra el programa solo encuentra ala primer persona que he ingresado.

Agradecería mucho que me ayudaran.  ;D



// Ejemplo para el blog.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define G 10


//Prototipos
void funcion();
void agregar();
void vacio();
void cambio();
void buscar();


//Estructura
typedef struct{
//Variable para saber si ya esta ocupado el lugar con un nombre.
int lleno;
//Variable para el nombre.
char nombre[N];
//variable para almacenar su edad
int edad;

}Personas;

Personas per[G];


int main(){


funcion();

system("pause");
return 0;
}


//Funcion para vaciar todas las estructuras y poner su vacriable lleno en 0;
void vacio(){
int i;

for(i=0; i < G ; i++){
per[i].lleno=0;
}
}

//Funcion para quitar el \n de los strings y poner \0
void cambio(char palabra[N]){
int i;

for(i=0; i<N; i++){
if(palabra[i] =='\n'){
palabra[i]='\0';
}
}

}

//Funcion que muestra el menu y da a eligir lo que se desea hacer.
void funcion(){
int op;
char key;

//Funcion para vaciar todas las estructuras y poner su vacriable lleno en 0;
vacio();

do{
do{
printf("Elige una opcion:\n");
printf("(1) Agregar una persona.\n");
printf("(2) Buscar una persona.\n");
printf("(3) Salir.\n");
scanf("%d", &op);
}while(op < 1 || op > 4);

switch(op){
case 1:{
agregar();
break;
}

case 2:{
buscar();
break;
}
}

if(op == 3){
printf("Has salido..\n");
break;
}
else{
printf("Quieres volver al menu[S/N]");
fflush(stdin);
scanf("%c", &key);
system("cls");
}

}while(key == 'S' || key == 's');


}


void agregar(){
int i,aux=0;
char *nombre_archi="datos.txt";
//Crear archivo.
FILE *archivo;
//Abrir Archivo con 'a' para agregar al final.
archivo=fopen(nombre_archi, "a");


for(i=0; i < G && aux==0; i++){
if(per[i].lleno==0){
printf("Escriba el nombre: ");
fflush(stdin);
fgets(per[i].nombre, N, stdin);
//Corrige el error de fgets.
cambio(per[i].nombre);

fprintf(archivo,"%s..",per[i].nombre);

printf("Edad: ");
fflush(stdin);
scanf("%d", &per[i].edad);
//añadir al bloc de notas
fprintf(archivo,"%d\n",per[i].edad);
//Llenar esta estructura para que no se vuelva a utilizar
per[i].lleno=1;
//Ruta de escape
aux=1;
}
}



}

void buscar(){
int i,aux=0;
char nombretemp[N];
//Poner el bloc de notas en modo lectura.
FILE* archivo;
char* nombre_archi="datos.txt";

archivo=fopen(nombre_archi,"r");

printf("Introduzca nombre: ");
fflush(stdin);
fgets(nombretemp,N,stdin);
cambio(nombretemp);

for(i=0; i < G && aux == 0; i++){
if(strcmp(nombretemp,per[i].nombre)==0){
printf("Nombre: %s\n", per[i].nombre);
printf("Edad: %d\n", per[i].edad);
aux=1;
}

else{
printf("El nombre NO existe.\n");
aux=1;
}

}

}




#3
Programación C/C++ / Re: Archivos en Lenguaje C
15 Agosto 2015, 04:13 AM
MUCHISIMAS GRACIAS por contestar  y dar un poco de tiempo.

mira este es el código que estaba haciendo por el ejemplo que describí en mi pregunta.

y me encontre con otro problema y es que Cuando agrego una persona, va bien y lo puedo buscar pero cuando agrego otra persona ya no puedo buscarla me lanza el mensaje que puse ahi que si no encontraba el nombre dijera el mensaje de ""El nombre NO existe.", como se puede solucionar el problema, Si es posible pudiera EXPLICARME que he batallado con esto de los archivos. de ante mano Muchas Gracias. :D


// Ejemplo para el blog.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define G 10


//Prototipos
void funcion();
void agregar();
void vacio();
void cambio();
void buscar();


//Estructura
typedef struct{
//Variable para saber si ya esta ocupado el lugar con un nombre.
int lleno;
//Variable para el nombre.
char nombre[N];
//variable para almacenar su edad
int edad;

}Personas;

Personas per[G];


int main(){


funcion();

system("pause");
return 0;
}


//Funcion para vaciar todas las estructuras y poner su vacriable lleno en 0;
void vacio(){
int i;

for(i=0; i < G ; i++){
per[i].lleno=0;
}
}

//Funcion para quitar el \n de los strings y poner \0
void cambio(char palabra[N]){
int i;

for(i=0; i<N; i++){
if(palabra[i] =='\n'){
palabra[i]='\0';
}
}

}

//Funcion que muestra el menu y da a eligir lo que se desea hacer.
void funcion(){
int op;
char key;

//Funcion para vaciar todas las estructuras y poner su vacriable lleno en 0;
vacio();

do{
do{
printf("Elige una opcion:\n");
printf("(1) Agregar una persona.\n");
printf("(2) Buscar una persona.\n");
printf("(3) Salir.\n");
scanf("%d", &op);
}while(op < 1 || op > 4);

switch(op){
case 1:{
agregar();
break;
}

case 2:{
buscar();
break;
}
}

if(op == 3){
printf("Has salido..\n");
break;
}
else{
printf("Quieres volver al menu[S/N]");
fflush(stdin);
scanf("%c", &key);
system("cls");
}

}while(key == 'S' || key == 's');


}


void agregar(){
int i,aux=0;
char *nombre_archi="datos.txt";
//Crear archivo.
FILE *archivo;
//Abrir Archivo con 'a' para agregar al final.
archivo=fopen(nombre_archi, "a");


for(i=0; i < G && aux==0; i++){
if(per[i].lleno==0){
printf("Escriba el nombre: ");
fflush(stdin);
fgets(per[i].nombre, N, stdin);
//Corrige el error de fgets.
cambio(per[i].nombre);

fprintf(archivo,"%s..",per[i].nombre);

printf("Edad: ");
fflush(stdin);
scanf("%d", &per[i].edad);
//añadir al bloc de notas
fprintf(archivo,"%d\n",per[i].edad);
//Llenar esta estructura para que no se vuelva a utilizar
per[i].lleno=1;
//Ruta de escape
aux=1;
}
}



}

void buscar(){
int i,aux=0;
char nombretemp[N];
//Poner el bloc de notas en modo lectura.
FILE* archivo;
char* nombre_archi="datos.txt";

archivo=fopen(nombre_archi,"r");

printf("Introduzca nombre: ");
fflush(stdin);
fgets(nombretemp,N,stdin);
cambio(nombretemp);

for(i=0; i < G && aux == 0; i++){
if(strcmp(nombretemp,per[i].nombre)==0){
printf("Nombre: %s\n", per[i].nombre);
printf("Edad: %d\n", per[i].edad);
aux=1;
}

else{
printf("El nombre NO existe.\n");
aux=1;
}

}

}





#4
Programación C/C++ / Archivos en Lenguaje C
15 Agosto 2015, 02:03 AM
Primero que nada muchas gracias de ante mano por darse el tiempo de leer mi duda...

es la primera vez que me atrevo a preguntar en un foro, por que tengo una duda sobre

el Lenguaje C, Es lo siguiente es sobre los Archivos, se usar y crear archivos para guardar datos, usar el 'fprintf' y se guarda en el archivo de texto..  pero mi duda es que si lo puedo usar como una base de datos muy básica. UN EJEMPLO:
-Si tuviera un programa que guarda el nombre de 10 personas y cuando terminara el programa ya se que mi archivo de texto se encuentra con los 10 nombres el problema es que cuando entro al programa nuevamente y tengo una función de buscar, con el nombre, al acceder yo el nombre, ya no puede buscar nada, solamente cuando yo no he cerrado el programa y apenas voy metiendo los 10 nombres, quisiera que pudiese leer una linea y no todo el archivo, es posible esto?? si, si es posible me podrían explicar como hacerlo, no se si me explique bien. Solo quiero que lea una parte del archivo y no todo. Muchas gracias de ante mano, soy novato en esto de la programación, me encantaría contar con ayuda de alguien.  y si yo pudiera a ayudar a alguien con gusto y con mis pocos conocimientos lo haría, muchísimas gracias.. Adios...  ;D