elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:53  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Duda en C nivel básico.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en C nivel básico.  (Leído 868 veces)
Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Duda en C nivel básico.
« en: 25 Abril 2008, 18:23 »

Pues mirad gente, he estado haciendo programas que incluyan cada una de los (¿comandos?) basicos de C, para tener donde consultar y los estoy guardando por nombre, (por cierto, pronto los colgaré en el foro como ejemplos para la gente que empiece, si eso) bueno, eso que estoy guardandolos con el source y el .exe al ladito, y intentaba hacer un ejemplo que incorporara estructuras y arrays peeero, tengo un problema con esto:

Código:
#include <stdio.h>
#define CONT 99
struct lenguages{
char nombre[20];
char portable[2];
float nota;
};
struct lenguages lenguage[99];

int main()
{
int cont;
cont = 0;
int contdef;
contdef = 99;
while(cont<CONT&&contdef==99){
printf( "Escribe el nombre del lenguaje: " );
fflush( stdout );
scanf( "%s", &lenguage[cont].nombre );
printf( "Es %s portable <si/no> ? ", lenguage[cont].nombre );
fflush( stdout );
scanf( "%s", &lenguage[cont].portable );
printf( "Escribe la nota del lenguage <1-10> : " );
fflush( stdout );
scanf( "%f", &lenguage[cont].nota );
cont++;
char salir;
printf( "Deseas terminar de introducir lenguages <s/n> ? " );
scanf("%s", &salir);
if(salir=='s'){
contdef=0;
}
}
cont-1;
while(cont>-1){
printf( "\n%s %s es portable y tiene un %f de nota.", lenguage[cont].nombre, lenguage[cont].portable, lenguage[cont].nota);
cont=cont-1;
}
return 0;
}

Notas: Trabajo con ubuntu linux, compilo con GCC y lo que intento hacer es un programa que te pida informacion sobre lenguages de programación hasta que le digas que no quieres introducir mas, entonces que te dé toda la información recogida anteriormente y luego salga.

Muchas gracias de antemano :P .


En línea
^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Duda en C nivel básico.
« Respuesta #1 en: 25 Abril 2008, 19:46 »

Yo me pregunto como haz podido compilar  :o

Ando un poco rapido y no puedo explicarte... ya quisiera  :-[ pero ciertamente, hay cosillas en ese codigo que buehhh... no estan muy bien organizadas.

Código:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#define CONT 99

typedef struct {
char nombre[20];
char portable[2];
float nota;
} lenguages;

int main(lenguages lenguage)
{
FILE *archivo;

archivo = fopen("log.txt", "aw");
assert(archivo);

int cont;
for (cont = 0; cont < CONT; cont ++)
{
printf( "Escribe el nombre del lenguaje: " );
scanf( "%s", &lenguage.nombre );
fflush( stdout );
printf( "Es %s portable <si/no> ? ", lenguage.nombre );
scanf( "%s", &lenguage.portable );
fflush( stdout );
printf( "Escribe la nota del lenguage <1-10> o salir <0>: " );
scanf( "%c", &lenguage.nota );
fflush( stdout );
fputs("\n", archivo);
fputs(lenguage.nombre, archivo);
fputs("\n", archivo);
fputs(lenguage.portable, archivo);
if (lenguage.nota == 0)
{
exit(1);
}
}
return 0;
}

Mas o menos... esto podria servirte de ejemplo.


En línea
Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Duda en C nivel básico.
« Respuesta #2 en: 25 Abril 2008, 21:47 »

Muchissimas gracias, me sacas de un problema, pero me introduces funciones que nu queria poner aún >.< . Pero vamos, eso en un plis se arregla, lo dicho, muchas gracias por todo, miraré a ver en que fallé, el codigo se lee muy bien :P .

Gracias!

EDITO: Pequeño error en el scanf de la nota, que escaneabas char en vez de float. :P
EDITO2: Perfecto, de paso edito el "esfanebas" xD.
EDITO3: Problemas, ahora me compila, y el programa "funciona" peero hay un problema en el log.txt, cuando le digo delphi y sus datos me da esto:

Código:
Delphi
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
0
no
delphi
si

Solo he introducido un lenguage. -.-''

Saludos y gracias de antemano. (Soyun negado :P)
« Última modificación: 25 Abril 2008, 22:26 por Ashran » En línea
Flakito81


Desconectado Desconectado

Mensajes: 508



Ver Perfil
Re: Duda en C nivel básico.
« Respuesta #3 en: 26 Abril 2008, 13:08 »

Version 2.0 de tu codigo
Código
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#define CONT 3
 
typedef struct {
char nombre[20];
char portable[2];
float nota;
} lenguages;
 
int main(lenguages lenguage)
{
  FILE *archivo;
  int i;
  lenguages *ptrLang;
 
  archivo = fopen("log.txt", "aw");
  assert(archivo);
  //introduciendo datos en el fichero
  for (i = 0; i < CONT; i++)
  {
     printf( "Escribe el nombre del lenguaje: " );
     scanf( "%s", ptrLang->nombre );
     fflush( stdout );
     printf( "Es %s portable <si/no> ? ", ptrLang->nombre );
     scanf( "%s", ptrLang->portable );
     fflush( stdout );
     printf( "Escribe la nota del lenguage <1-10> " );
     scanf( "%f", &ptrLang->nota );
     fflush( stdout );
     fwrite( ptrLang, sizeof(lenguages), 1, archivo );
 
  }
 
  fclose(archivo);
  //-- Visualizando contenido del fichero
  if((archivo = fopen("log.txt", "r")) == NULL)
  {
           printf ("ERROR: al abrir el fichero para lectura");
return 1;
  }
  fread(ptrLang,sizeof(lenguages),1,archivo);
  while(!feof(archivo))
  {
     printf ("\n%s     %s      %5.2f", ptrLang->nombre, ptrLang->portable, ptrLang->nota);
     fread(ptrLang,sizeof(lenguages),1,archivo);  
  }    
  fclose(archivo);
  return 0;
}
 
Como puedes observar se graba en binario (cuando abras el fichero veras caracteres raros)
Si Quieres grabarlo en modo texto lee los datos y son fprintf construye la cadena que kieras grabar.
Código
fprintf (archivo, "%s %s %2.2f\n", ptrLang->nombre, ptrLang->portable, ptrLang->nota);
 

Por supesto si cambias al modo texto no te servirá el codigo para visualizar que te he puesto.

Un saludo!
En línea
^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Duda en C nivel básico.
« Respuesta #4 en: 26 Abril 2008, 14:15 »

Se me olvido poner fclose Dios mio !!!   :o

No se como pude obviarlo, lol.... se quedo chupando ram la aplicacion lo siento  :-[

Aunque desconozco, porque se te guardo el 'log.txt' de la manera que lo hizo, continuo el Bucle .... esto mas sin embargo no me ocurre en Linux con Gcc, pero en fin.

Como te explique, postee un poco rapido... y no es que sepa mucho C como me gustaria  :rolleyes: sobretodo porque encuentro que C es tan 'logica matematica' y me cuesta sobremanera desarrollar mi area matematica, tengo enorme facilidad en sacar sobre 90 en cualquier materia, menos en Matematicas o Fisica  :-\ aqui siempre saco maximo 85 si es que llego por lo general siempre es sobre 70  :xD

Flakito81 Mil gracias por la correcion a mi codigo, Un beso encanto  :-* aunque no te lo diga, admiro mucho tus respuestas sobre C o C++, ya quisiera yo tener tu nivel en C.

Y Ashran, :) espero que tus dudas hayan sido resueltas.
« Última modificación: 26 Abril 2008, 14:16 por ^TiFa^ » En línea
Jukuqs

Desconectado Desconectado

Mensajes: 73



Ver Perfil
Re: Duda en C nivel básico.
« Respuesta #5 en: 26 Abril 2008, 14:56 »

Todo resuelto, un placer ;P . Intentaré por eso adaptar los códigos a mi nivel que esto me queda un poco lejos XD.

Muchas graciaaas!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
|Lo que no hay que hacer en C/C++. Nivel basico| « 1 2 3 4 »
Programación C/C++
Littlehorse 54 31,785 Último mensaje 25 Diciembre 2011, 07:45
por Hackmundy
Ayudaa problema nivel basico
Programación C/C++
krowa 0 146 Último mensaje 13 Marzo 2012, 23:48
por krowa
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines