Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error en programa

Estas en el tema de Error en programa en el foro de C/C++ en Foros del Web. Hola, estoy estudiando C y leyendo el libro "El lenguaje de programación en C" de Kernighan y Ritchie. Me he quedado bloqueado en este ejemplo ...
  #1 (permalink)  
Antiguo 02/11/2010, 04:42
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Error en programa

Hola,

estoy estudiando C y leyendo el libro "El lenguaje de programación en C" de Kernighan y Ritchie. Me he quedado bloqueado en este ejemplo de la página 19 del libro en el que me da el siguiente error al compilar "Conflicting types for getline" en la línea 11 y 34 que he marcado en rojo en el código. Utilizo como IDE Eclipse CDT en Ubuntu 10.04.

Gracias.




Código:
#include <stdio.h>
#define MAXLINE 1000		/*Tamaño máximo de la línea de entrada*/

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/*Imprime la línea más larga*/
main()
{
	int len;				/*longitud actual de la línea*/
	int max;				/*máxima longitud vista hasta el momento*/
	char line[MAXLINE];		/*Línea de entrada actual*/
	char longest[MAXLINE];	/*Línea más larga se guarda aquí*/

	max = 0;
	while((len = getline(line, MAXLINE)) > 0)
		if(len > max)
		{
			max = len;
			copy(longest, line);
		}
	if(max > 0)
		printf("%s", longest);
	return 0;
}

int getline(char s[], int lim)
{
	int c, i;
	for(i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; ++i)
		s[i] = c;
	if(c=='\n')
	{
		s[i]=c;
		++i;
	}
	s[i] = '\0';
	return i;
}

void copy(char to[], char from[])
{
	int i;
	i=0;
	while((to[i] = from[i])!='\0')
		++i;
}
  #2 (permalink)  
Antiguo 02/11/2010, 07:47
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Error en programa

Cita:
Iniciado por luface2000 Ver Mensaje
Hola,

estoy estudiando C y leyendo el libro "El lenguaje de programación en C" de Kernighan y Ritchie. Me he quedado bloqueado en este ejemplo de la página 19 del libro en el que me da el siguiente error al compilar "Conflicting types for getline" en la línea 11 y 34 que he marcado en rojo en el código. Utilizo como IDE Eclipse CDT en Ubuntu 10.04.

Gracias.




Código:
#include <stdio.h>
#define MAXLINE 1000		/*Tamaño máximo de la línea de entrada*/

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/*Imprime la línea más larga*/
main()
{
	int len;				/*longitud actual de la línea*/
	int max;				/*máxima longitud vista hasta el momento*/
	char line[MAXLINE];		/*Línea de entrada actual*/
	char longest[MAXLINE];	/*Línea más larga se guarda aquí*/

	max = 0;
	while((len = getline(line, MAXLINE)) > 0)
		if(len > max)
		{
			max = len;
			copy(longest, line);
		}
	if(max > 0)
		printf("%s", longest);
	return 0;
}

int getline(char s[], int lim)
{
	int c, i;
	for(i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; ++i)
		s[i] = c;
	if(c=='\n')
	{
		s[i]=c;
		++i;
	}
	s[i] = '\0';
	return i;
}

void copy(char to[], char from[])
{
	int i;
	i=0;
	while((to[i] = from[i])!='\0')
		++i;
}


Si mira, a esto que se hace ahi se le llama funciones prototipo, es una forma de asegurar que el programa va a buscar todas las funciones que declares. Pero para una correcta declaracion de una funcion prototipo, el enunciado del inicio debe ser exactamente el mismo que el que usas al momento de declarar la funcion, es decir a la primer linea en rojo sustituyela por algo asi.

Código:
int getline(char s[], int lim);
No olvides el punto y coma en la declaracion de las funciones prototipo
  #3 (permalink)  
Antiguo 02/11/2010, 11:13
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Error en programa

Hola,

he realizado las modificaciones y me sigue dando el mismo error. La verdad es que estoy perdido. Adjunto imagen de eclipse y el error mostrado http://www.flickr.com/photos/34532364@N02/5139743603/

Un saludo y gracias.



Código:
#include <stdio.h>
#define MAXLINE 1000            /*Tamaño máximo de la línea de entrada*/

//int getline(char line[], int maxline);
int getline(char s[], int lim);
void copy(char to[], char from[]);

/*Imprime la línea más larga*/
main()
{
        int len;                                /*longitud actual de la línea*/
        int max;                                /*máxima longitud vista hasta el momento*/
        char line[MAXLINE];             /*Línea de entrada actual*/
        char longest[MAXLINE];  /*Línea más larga se guarda aquí*/

        max = 0;
        while((len = getline(line, MAXLINE)) > 0)
                if(len > max)
                {
                        max = len;
                        copy(longest, line);
                }
        if(max > 0)
                printf("%s", longest);
        return 0;
}

int getline(char s[], int lim)
{
        int c, i;
        for(i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; ++i)
                s[i] = c;
        if(c=='\n')
        {
                s[i]=c;
                ++i;
        }
        s[i] = '\0';
        return i;
}

void copy(char to[], char from[])
{
        int i;
        i=0;
        while((to[i] = from[i])!='\0')
                ++i;
}
  #4 (permalink)  
Antiguo 02/11/2010, 11:19
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en programa

cambiale el nombre a getline1
  #5 (permalink)  
Antiguo 02/11/2010, 12:01
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Error en programa

Hola,

gracias ya se ha solucionado el error. Ya me había pasado en un programa para la uni que no admitía la variable y hasta que la renombré a y1. Tendré que estar alerta con estas variables.

Por otro lado el programa no saca nada por consola, pero eso es otra cosa.

Saludos y gracias de nuevo.
  #6 (permalink)  
Antiguo 03/11/2010, 21:10
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en programa

te funciono mi solucion o como le hiciste, patica...
  #7 (permalink)  
Antiguo 04/11/2010, 02:27
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Error en programa

Hola,

lo que es la compilación del programa no da ningún error con tu solución de getline1, pero al ejecutarlo no hace nada. Tengo que repasar el programa para ver si tengo un error de otro tipo. Te cuento.

Un saludo.

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.