Me va a dar algo con este programa... no logro ver pq no me hace el gets

Iniciado por lol_fallen, 7 Febrero 2012, 10:10 AM

0 Miembros y 1 Visitante están viendo este tema.

lol_fallen

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 (cpp) [Seleccionar]
include<iostream.h>
using namespace std;

int main(void){
char cadena[40]={},equipo[20]={},equipo2[20]=...
int espacios=1,espaciosant=0;
char *ptr;
int numcadena,veces,contador=0;
char *equipoptr;
cin>>veces;

while(veces != contador){

gets(cadena);
equipoptr = equipo;

gets(equipo);
while(*equipoptr != 'F'){

espacios = 1;
gets(cadena);
equipoptr = equipo;

gets(equipo);
ptr = cadena;

while(*ptr != '\0') {
ptr = ptr +1;

if(*ptr == ' ' ) {
espacios++;

}
}


if (espacios > espaciosant) {
strcpy(equipo2,equipo);


espaciosant = espacios;
cout<<espaciosant<<endl;

}
}

cout<<"EL MEJOR: "<<equipo2<<" "<<espacios<<endl;
contador++;
}


Gracias a todos por adelantado.  ;D

eleon

Pues hay más de uno...

Código (cpp) [Seleccionar]
include<iostream.h>
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 (cpp) [Seleccionar]
#include<iostream>
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 (cpp) [Seleccionar]
int main(void){
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.

naderST

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.