Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lol_fallen en 7 Febrero 2012, 10:10 am



Título: Me va a dar algo con este programa... no logro ver pq no me hace el gets
Publicado por: lol_fallen en 7 Febrero 2012, 10:10 am
Pues veréis llevo varios días ya que no me aclaro con este programa, no se porque narices no me hace los gets bien.....,le véis algún fallo??????  :huh: :huh: :huh:
Código
  1. include<iostream.h>
  2. using namespace std;
  3.  
  4. int main(void){
  5. char cadena[40]={},equipo[20]={},equipo2[20]=
  6. int espacios=1,espaciosant=0;
  7. char *ptr;
  8. int numcadena,veces,contador=0;
  9. char *equipoptr;
  10. cin>>veces;
  11.  
  12. while(veces != contador){
  13.  
  14. gets(cadena);
  15. equipoptr = equipo;
  16.  
  17. gets(equipo);
  18. while(*equipoptr != 'F'){
  19.  
  20. espacios = 1;
  21. gets(cadena);
  22. equipoptr = equipo;
  23.  
  24. gets(equipo);
  25. ptr = cadena;
  26.  
  27. while(*ptr != '\0') {
  28. ptr = ptr +1;
  29.  
  30. if(*ptr == ' ' ) {
  31. espacios++;
  32.  
  33. }
  34. }
  35.  
  36.  
  37. if (espacios > espaciosant) {
  38. strcpy(equipo2,equipo);
  39.  
  40.  
  41. espaciosant = espacios;
  42. cout<<espaciosant<<endl;
  43.  
  44. }
  45. }
  46.  
  47. cout<<"EL MEJOR: "<<equipo2<<" "<<espacios<<endl;
  48. contador++;
  49. }

Gracias a todos por adelantado.  ;D


Título: Re: Me va a dar algo con este programa... no logro ver pq no me hace el gets
Publicado por: eleon en 7 Febrero 2012, 11:14 am
Pues hay más de uno...

Código
  1. include<iostream.h>
  2. using namespace std;

1- La función include la analiza el preprocesador, por tanto hay que poner antes un "#". Además la librería no se llama "iostream.h" sino "iostream"; quedaría asi:

Código
  1. #include<iostream>
  2. using namespace std;

2- En esta parte los puntos suspensivos del final te darán un error como una casa porque eso no es ningún tipo de instrucción:

Código
  1. int main(void){
  2. char cadena[40]={},equipo[20]={},equipo2[20]=

3- Para usar "gets" debes añadir la librería "stdio.h".
4- La función "strcpy()" tampoco te va a funcionar si no añades la librería "string.h".
5- Te falta un "}" (cerrar llave) al final del programa.

Y por último gets no se debe usar, está totalmente desaconsejado; ya que programas en c++ puedes usar "cin.getline()".

Saludos.


Título: Re: Me va a dar algo con este programa... no logro ver pq no me hace el gets
Publicado por: naderST en 7 Febrero 2012, 21:15 pm
Un consejo, si no vas a programar orientado a objetos no uses C++ usa C. Como te decía eleon no está recomendado usar gets() ya que puede causar un buffer overflow (desbordamiento del buffer), usa fgets() y lee del stdin.