Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di felpone
    Registrato dal
    Jun 2010
    Messaggi
    182

    [c]Scrittura su stream .txt

    Salve,ho scritto questo codice ma purtroppo il file viene solo creato e al suo interno non viene scritto niente.Come mai?

    codice:
    
    #include <stdio.h>
    
    int main(){
        
      FILE *fp;
      char* str="Giuliano mangia i bambini";
      if(fp=fopen("c:\\Giuliano il comunista.txt","w")==NULL){
           printf("error fopen");                
                       
                           }
    
        
        fputs(str,fp);
        
        fclose(fp);
        
        
        
        
        
        
        
        
        }

  2. #2
    A parte che ci vuole un'altra parentesi tonda prima di "fp=fopen..."
    if((fp=fopen("c:\\Giuliano il comunista.txt","w"))==NULL)
    sennò non compila l' if, e comunque il tuo problema sarà solo sui permessi nel file C di windows, probabilmente seven/vista...cambia directory e tutto funzionerà senza problema!

  3. #3
    Utente di HTML.it L'avatar di felpone
    Registrato dal
    Jun 2010
    Messaggi
    182
    Ti sbagli per il fatto della parentesi..

  4. #4
    Mmm strano perchè tu metti un' assegnazione e sullo stesso livello un confronto booleano...la soluzione comunque ha funzionato?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    4
    Secondo me in queste poche righe hai commesso più di un errore...

    1)
    codice:
    if(fp=fopen("c:\\Giuliano il comunista.txt","w")==NULL)
    il risultato dell'espressione per l'IF è falso, quindi non esegue la printf() con il messaggio di errore. Al puntatore "fp" però viene assegnato un valore NULL per cui quando la funzione fputs() prova a scrivere nel file è destinata a fallire.

    2)
    Per come hai scritto il programma devi fare in modo che la scrittura avvenga solo se il risultato dell'if è falso, quindi fputs() lo devi mettere nel blocco "else", altrimenti viene eseguito sempre anche se l'apertura del file è fallita.

    3)
    Come già segnalato da Celtico94 devi fare attenzione a dove crei il file, perchè i moderni sistemi operativi sono piuttosto rigidi in questo. Crea almeno una cartella in C e scrivi in quella cartella.

    prova a scriverlo così, creando la cartella prima perchè fopen() non te la crea automaticamente:
    codice:
    #include <stdio.h>
    
    int main()
    {
    
    	FILE *fp;
    	char *str = "Giuliano mangia i bambini";
    
    
    	fp=fopen("c:\\cartella\\Giuliano il comunista.txt","w");
    	if(fp==NULL){
    	   printf("error fopen");
    	}
    	else{
    		fputs(str,fp);
    		fclose(fp);
    	}
    
    	return 0;
    }
    L'if potresti scriverla anche così:
    codice:
    	if(fp=fopen("c:\\Giuliano il comunista.txt","w")){
    		fputs(str,fp);
    		fclose(fp);
    	}
    	else{
    	   printf("error fopen");
            }

  6. #6
    Utente di HTML.it L'avatar di felpone
    Registrato dal
    Jun 2010
    Messaggi
    182
    Grazie. L'errore era nella condizione if. Per il resto funziona anche senza creare una cartella, direttamente in /c.

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.