Gracias Gracias:  0
Me Gusta Me Gusta:  0
No me Gusta No me Gusta:  0
Mostrando resultados del 1 al 5 de 5

Tema: duda C

  1. #1
    nyarko Invitado

    duda C

    no se si esta seccion del foro puedo colocar este post, si no es asi, ya no se repetira, gracias

    esq tengo una duda de C, kiero q un fichero me lo muestre por patalla y me diga la linea mas larga.... a ver si sabeis lo q tengo mal... gracias

    #include<stdio.h>
    #include<string.h>
    int main(int argc,char *argv[]){

    int contador = 0;
    char aux[256];
    FILE *fich;

    fich=fopen("ejemplo.txt","r");

    while(fgets(aux,256,fich)!=NULL){/*mientras haya lienas lee el fichero*/

    printf("%s",aux);

    if (strlen(aux)<=contador)
    contador=strlen(aux);}

    fclose(fich);

    return 0;}

  2. #2
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    18
    Hola nyarko

    Pues lo primero la sección es la adecuada, así que no hay problema en eso

    A ver, tal y como lo tienes lo único que hace el programa es mostrar por pantalla el contenido del fichero

    La comparación en el if creo que la tienes al revés, si lo que quieres es ver la línea más larga la comparación debería ser >, no <=, ya que la longitud de la línea nunca será menor que 0, por lo que nunca te entra en el if

    Luego ... si cambias la comparación lo que estarías haciendo es guardar en la variable contador la longitud de la línea más larga, pero luego no la usas para nada ... Si lo que quieres es que al final te imprima la línea en concreto tendrías que usar otra variable, igual a la que tienes de nombre aux y guardarla ahí, de forma que al terminar el while la mostrara por pantalla o lo que quisieras ya hacer con ella

    Espero haberte aclarado

    Un saludo
    Última edición por chuzo; 25-oct-2004 a las 23:15
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  3. #3
    nyarko Invitado
    pero no se lo q pasa q lo compilo y explota
    me dice q el error esta en el while, no se lo q puede ser¡¡

  4. #4
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    18
    Te da error al compilar o al ejecutar??

    Yo no lo he probado, sólo miré el código, pero en principio debería compilar, a ver si puedes poner la salida que te da el compilador o al ejecutarlo si el fallo está ahí

    Edito: Acabo de probarlo y compila y se ejecuta perfectamente ..

    Código:
    carlos@carlos:~/Documents/pruebas> gcc -o prueba prueba.c
    carlos@carlos:~/Documents/pruebas> ./prueba
    #include<stdio.h>
    #include<string.h>
    
    int main(int argc,char *argv[]){
    
    	int contador = 0;
    	char aux[256];
    	FILE *fich;
    	
    	fich=fopen("ejemplo.txt","r");
    	
    	/*mientras haya lineas lee el fichero*/
    	while(fgets(aux,256,fich)!=NULL){
    		printf("%s",aux);
    		
    		if (strlen(aux)<=contador)
    			contador=strlen(aux);
    	}
    	
    	fclose(fich);
    
    	return 0;
    }
    Última edición por chuzo; 25-oct-2004 a las 23:32
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  5. #5
    avalanch Invitado
    while(fgets(aux,256,fich)!=NULL){
    printf("%s",aux);

    if (strlen(aux)<=contador)
    contador=strlen(aux);

    Por probar otrol while.. //que es donde te da el fallo
    Prueba...
    do{
    fgets(aux,256,fich);
    if(strlen(aux)>contador)
    contador=strlen(aux);
    }while(!feof(fich)); //Mientras no se acabe el fichero...

    C tendria que revisarmelo.. yo se mas C++ pero creo que ese codigo está bien.
    Y para que te diga cual es la linea mas larga
    linealarga=1;
    contador=0;
    linealeida=1;
    do{
    fgets(aux,256,fich);
    if(strlen(aux)>contador){
    contador=strlen(aux);
    linealarga=linealeida;
    }
    linealeida++;

    }while(!feof(fich));
    printf("La linea mas larga es la linea nº %d \n",linealarga);
    Última edición por avalanch; 04-dic-2004 a las 04:59 Razón: Creo que llego con algo de retraso... ejem.. jaja

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •