Ciclo while che si ferma

di Anonimizzato12596 il
13 risposte
Ciao a tutti sara' banale ma non capisco perche' questo ciclo non arriva fino alla fine del file
   while(fgets(str2, 200, ft) != NULL) // legge e stampa ogni riga
	  {

		  
		   while (str2[i])
		   {
		    c=str2[i];
		    if (isspace(c)) c=','; 
		    fprintf(fx,"%c",c);
		    i++;
		   }	  
	  	
	  
	  }
grazie
A.

13 Risposte

  • Ma la variabile i da quanto parte? E aumenta sempre?
  • Parte da zero


    int i=0;
  • Sì, ma nel ciclo non viene mai azzerata ...
  • oregon ha scritto:


    Sì, ma nel ciclo non viene mai azzerato ...
    non vedo perche' lo dovrei azzerare! e' una variabilr globale parte da zero legge tutto il file e finisce
  • antonio66 ha scritto:


    oregon ha scritto:


    Sì, ma nel ciclo non viene mai azzerato ...
    non vedo perche' lo dovrei azzerare!
    Se te lo dico un motivo ci sarà, no?!

    Tu usi la variabile i nel ciclo come indice di str2 che è un vettore di char presumibilmente non più grande di 200 caratteri ed è usato per ogni linea del file. Ma se i aumenta senza controllo nel ciclo, assumerà valori molto più grandi di 200 causando un accesso illecito in memoria con risultati imprevedibili ...

    Però, fai un po' come vuoi ...
  • oregon ha scritto:


    antonio66 ha scritto:


    oregon ha scritto:


    Sì, ma nel ciclo non viene mai azzerato ...
    non vedo perche' lo dovrei azzerare!
    Se te lo dico un motivo ci sarà, no?!

    Tu usi la variabile i nel ciclo come indice di str2 che è un vettore di char presumibilmente non più grande di 200 caratteri ed è usato per ogni linea del file. Ma se i aumenta senza controllo nel ciclo, assumerà valori molto più grandi di 200 causando un accesso illecito in memoria con risultati imprevedibili ...

    Però, fai un po' come vuoi ...
    si inprevedibili ok! pero' nel mio caso mi legge solo una riga e gli ultimi 3 caratteri della terza riga....
  • Okay, vuoi fare delle prove o vuoi solamente discutere ?

    Scusa ma non ho tutto questo tempo e sinceramente non so cosa altro dirti ... è un codice semplicissimo ...
  • oregon ha scritto:


    Okay, vuoi fare delle prove o vuoi solamente discutere ?

    Scusa ma non ho tutto questo tempo e sinceramente non so cosa altro dirti ... è un codice semplicissimo ...
    si,scusa, voglio fare delle prove e risolvere il problema!
    scusa! e grazie
    A.
  • Quindi vedi di gestire meglio la variabile i e vedi che risolvi.

    A proposito, cosa contiene il file dei dati?

    Proponi tutto il main con l'apertura del file e vedo di provarlo praticamente.
  • oregon ha scritto:


    A proposito, cosa contiene il file dei dati?
    e' un semplice file di testo in cui devo recuperare solo alcuni valori che sono sparsi qua e la....
  • Sì, ma puoi fare un esempio concreto senza dover utilizzare decine di post ... scusa ma così una discussione dura ore ...

    Mostra un paio di line del file dati per fare un test e mostra anche il main ...
  • oregon ha scritto:


    Sì, ma puoi fare un esempio concreto senza dover utilizzare decine di post ... scusa ma così una discussione dura ore ...

    Mostra un paio di line del file dati per fare un test e mostra anche il main ...
    ma' tra una prova e l'altra sono tornato sui miei vecchi passi! pero' adesso ho un problema tra un'array di char e un'array di long....
    e' meglio che mi metto a studiare...
  • Va beh ... abbiamo scherzato un'oretta ...
Devi accedere o registrarti per scrivere nel forum
13 risposte