Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C]Problema con fopen()

    Ho questo codice:
    codice:
     
    #include <stdio.h>
    #include <stdlib.h>
    /* divhiarazione variabili */
    char testo[356];
    char filename[256];
    char aprif[266];
    /* main()*/
    int main(void)
    {
    int scelta;
    printf("----- Benvenuti in Lucas Files Editor BETA 0.2 (c)2002 -----\n\n");
    printf("Possibilita:\n1. Nuovo Files\n2. Apri files\n");
    scanf("%i", &scelta);
    printf("\n");
    if (scelta == 1)
    {/* Nuovo files*/
    printf("Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)");
    printf("\n");
    gets(filename);
    printf("\n");
    printf("Inserisci il contenuto del files\n");
    printf("\n");
    gets(testo);
    salvaconome(filename, testo);
    }
    if (scelta == 2)
    {/* Apertura Files*/
    printf("Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)");
    printf("\n");
    gets(aprif);
    printf("\n");
    apri(aprif);
    }
          system("PAUSE");
          return 0;
    }
    /* Dichirazione funzione*/
    void salvaconome(char *nomefiles, char *testo)
    {
    FILE *hFile;
    hFile = fopen(nomefiles, "w");
    if(!hFile) {/* Gestione errore*/
    printf("Creazione/apertura del file fallita\n");
    return;
    }
    printf("Salvataggio in corso......\n");
    fwrite(testo, 1, strlen(testo)+1, hFile);
    fclose(hFile);
    printf("Salvataggio riuscito!\n");
    }
    /* Dichiarazione funzione*/
    void apri(char *cosa) {
    	int ch;
    	FILE *bFile;
    	bFile = fopen(cosa, "rt");
    	
    	if(!bFile) {/* Gestione errore*/
    		printf("Files inesistente\n");
    		return;
    	}
    
    	do {
    		ch = getc(bFile);
    		putchar(ch);
    	}while(ch != EOF);
    }
    Perche se scielgo 2 mi compare subito files inesistente?????
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  2. #2
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    curiosità:
    Con che compili questo listato?

  3. #3
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    L'ho corretto usando vc6 ora funziona:

    #include <stdio.h>
    #include <stdlib.h>
    #include<fstream.h>
    #include<iostream.h>
    #include<string.h>
    #include <io.h>
    /* divhiarazione variabili */
    char testo[356];
    char filename[10];
    char aprif[266];
    char nomefiles[10];


    void salvaconome(char *nomefiles, char *testo);
    void apri(char *cosa);



    /* main()*/
    int main(void)
    {
    int scelta;
    printf("----- Benvenuti in Lucas Files Editor BETA 0.2 (c)2002 -----\n\n");
    printf("Possibilita:\n1. Nuovo Files\n2. Apri files\n");
    scanf("%i", &scelta);
    printf("\n");
    if (scelta == 1)
    {/* Nuovo files*/
    cout<<"Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)"<<endl;
    cin>>nomefiles;


    printf("\n");
    cout<<"Inserisci il contenuto del files"<<endl;
    cin>>testo;


    salvaconome(nomefiles, testo);

    }
    if (scelta == 2)
    {/* Apertura Files*/
    cout<<"Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)"<<endl;
    printf("\n");
    cin>>aprif;

    printf("\n");
    apri(aprif);

    }
    system("PAUSE");
    return 0;
    }
    /* Dichirazione funzione*/

    void salvaconome(char *nomefiles, char *testo)
    {
    FILE *hFile;

    hFile = fopen(nomefiles, "w");
    if(!hFile) {/* Gestione errore*/

    printf("Creazione/apertura del file fallita\n");
    return;
    }
    printf("Salvataggio in corso......\n");
    fwrite(testo, 1, strlen(testo)+1, hFile);
    fclose(hFile);
    printf("Salvataggio riuscito!\n");
    return;
    }
    /* Dichiarazione funzione*/
    void apri(char *cosa) {


    int ch;
    FILE *bFile;
    bFile = fopen(cosa, "rt");

    if(!bFile) {/* Gestione errore*/
    printf("Files inesistente\n");
    return;
    }

    do {
    ch = getc(bFile);
    putchar(ch);
    }while(ch != EOF);

    }




    link
    homepage http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
    forum http://%77%77%77%2e%74%77%6f%72%6b%2...um/default.asp

  4. #4
    Originariamente inviato da steno12
    curiosità:
    Con che compili questo listato?
    Dev C++ 4
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  5. #5
    Originariamente inviato da steno12
    L'ho corretto usando vc6 ora funziona:

    #include <stdio.h>
    #include <stdlib.h>
    #include<fstream.h>
    #include<iostream.h>
    #include<string.h>
    #include <io.h>
    /* divhiarazione variabili */
    char testo[356];
    char filename[10];
    char aprif[266];
    char nomefiles[10];


    void salvaconome(char *nomefiles, char *testo);
    void apri(char *cosa);



    /* main()*/
    int main(void)
    {
    int scelta;
    printf("----- Benvenuti in Lucas Files Editor BETA 0.2 (c)2002 -----\n\n");
    printf("Possibilita:\n1. Nuovo Files\n2. Apri files\n");
    scanf("%i", &scelta);
    printf("\n");
    if (scelta == 1)
    {/* Nuovo files*/
    cout<<"Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)"<<endl;
    cin>>nomefiles;


    printf("\n");
    cout<<"Inserisci il contenuto del files"<<endl;
    cin>>testo;


    salvaconome(nomefiles, testo);

    }
    if (scelta == 2)
    {/* Apertura Files*/
    cout<<"Inserisci il percorso comleto del files(esempio X:\\nomecartella\\nomefiles.estens)"<<endl;
    printf("\n");
    cin>>aprif;

    printf("\n");
    apri(aprif);

    }
    system("PAUSE");
    return 0;
    }
    /* Dichirazione funzione*/

    void salvaconome(char *nomefiles, char *testo)
    {
    FILE *hFile;

    hFile = fopen(nomefiles, "w");
    if(!hFile) {/* Gestione errore*/

    printf("Creazione/apertura del file fallita\n");
    return;
    }
    printf("Salvataggio in corso......\n");
    fwrite(testo, 1, strlen(testo)+1, hFile);
    fclose(hFile);
    printf("Salvataggio riuscito!\n");
    return;
    }
    /* Dichiarazione funzione*/
    void apri(char *cosa) {


    int ch;
    FILE *bFile;
    bFile = fopen(cosa, "rt");

    if(!bFile) {/* Gestione errore*/
    printf("Files inesistente\n");
    return;
    }

    do {
    ch = getc(bFile);
    putchar(ch);
    }while(ch != EOF);

    }




    Ma siamo sicuri che sia C??????
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  6. #6
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    L'ho compilato con vc6 e funziona benissimo.

    se infatti noti o tolto le linee printf e ho aggiunto cout, che comunque era uguale.
    Ma la cosa che non mi funzionava erano le due chiamate di funzioni in cui mi dava l'errore su salvaconome e apri.
    per questo motivo ho dovuto scrivere queste due righe che mi referenziano le due chiamata
    e al primo colpo ha funzionato tutto okay

    void salvaconome(char *nomefiles, char *testo);
    void apri(char *cosa);

    in questo modo l'errore del menù 2 che hai postato non l'ho fà......

  7. #7
    nn va lo stesso


    P.S: compilando il tuo cod con Dev C++ 4 e Turbo C 2.2 mi dava 30 errori(warning e vari)
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    hai provato a modificare le chiamate agli header togliendo il .h ?

    Forse il compilatore che hai tu (essendo + recente di quello di VC) usa l'altro metodo per includere i namespace...

    sinceramente non mi ricordo bene, altrimenti sarei stato + chiaro: Mi sembra che le specifiche di C++ (oggi) accettino due metodi validi per includere i file header. Alcuni compilatori recenti potrebbero non funzionare correttamente con le dichiarazioni vecchio tipo..


  9. #9
    codice:
     
    /* 
       Name: 
       Author: 
       Description: 
       Date: 
       Copyright: 
    */
    #include <stdio.h>
    #include <stdlib.h>
    /* prototipi funzioni*/
    void apri(char *cosa);
    void salvaconome(char *nomefiles, char *testo);
    /* divhiarazione variabili */
    char testo[356];
    char filename[256];
    char aprifile[266];
    /* main()*/
    int main(void)
    {
    int scelta;
    printf("----- Benvenuti in Lucas Files Editor BETA 0.2 (c)2002
    -----\n\n");
    printf("Possibilita:\n1. Nuovo Files\n2. Apri files\n");
    printf("\n");
    gets(testo);
    scelta = atoi(testo);
    if (scelta == 1)
    {/* Nuovo files*/
    printf("Inserisci il percorso completo del files(esempio
    X:\\nomecartella\\nomefiles.estens)");
    printf("\n");
    gets(filename);
    printf("\n");
    printf("Inserisci il contenuto del files\n");
    printf("\n\n");
    gets(testo);
    salvaconome(filename, testo);
    }
    if (scelta == 2)
    {/* Apertura Files*/
    printf("Inserisci il percorso completo del files(esempio X:\\nomecartella\\nomefiles.estens)");
    printf("\n");
    gets(aprifile);
    printf("\n\n");
    apri(aprifile);
    }
    system("PAUSE");
          return 0;
    }
    /* Dichirazione funzione*/
    void salvaconome(char *nomefiles, char *testo)
    {
    FILE *hFile;
    hFile = fopen(nomefiles, "w");
    if(!hFile) {/* Gestione errore*/
    printf("Creazione/apertura del file fallita\n");
    return;
    }
    printf("Salvataggio in corso......\n");
    fwrite(testo, 1, strlen(testo)+1, hFile);
    fclose(hFile);
    printf("Salvataggio riuscito!\n");
    }
    /* Dichiarazione funzione*/
    void apri(char *cosa) {
            int ch;
            FILE *bFile;
            bFile = fopen(cosa, "rt");
    
            if(!bFile) {/* Gestione errore*/
                    printf("Files inesistente\n");
                    return;
            }
    
            do {
                    ch = getc(bFile);
                    putchar(ch);
            }while((ch != EOF) && ch);
            printf("\n");
    }
    Compilalo e dimmi se ti piascie

    P.S: fai conto che nn ho libri e sto facendo tutto da autoditatta
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Compilando il codice che ti posto sotto mi dà:

    Fatal Error C1010: fine file imprevista durante la ricerca della direttiva relativa all'intestazione precompilata.

    (Compilatore VC++.NET)

    Non ti garantisco nulla, ho solo letto qualcosa, ma (ancora)
    non programmo in C++


    Ciao

    codice:
    /* 
       Name: 
       Author: 
       Description: 
       Date: 
       Copyright: 
    */
    #include <stdio.h>
    #include <stdlib.h>
    
    /* prototipi funzioni*/
    void apri(char *cosa);
    void salvaconome(char *nomefiles, char *testo);
    
    /* divhiarazione variabili */
    char testo[356];
    char filename[256];
    char aprifile[266];
    
    /* main()*/
    int main(void)
    {
    	int scelta;
    		printf("----- Benvenuti in Lucas Files Editor BETA 0.2 (c)2002-----\n\n");
    		printf("Possibilita:\n1. Nuovo Files\n2. Apri files\n");
    		printf("\n");
    		gets(testo);
    		scelta = atoi(testo);
    		if (scelta == 1)
    			{/* Nuovo files*/
    			printf("Inserisci il percorso completo del files(esempioX:\\nomecartella\\nomefiles.estens)");
    			printf("\n");
    			gets(filename);
    			printf("\n");
    			printf("Inserisci il contenuto del files\n");
    			printf("\n\n");
    			gets(testo);
    			salvaconome(filename, testo);
    }
    
    		if (scelta == 2)
    		/* Apertura Files*/
    		{
    		printf("Inserisci il percorso completo del files(esempio X:\\nomecartella\\nomefiles.estens)");
    		printf("\n");
    		gets(aprifile);
    		printf("\n\n");
    		apri(aprifile);
    		}
    system("PAUSE");
    return 0;
    }
    
    /* Dichirazione funzione*/
    void salvaconome(char *nomefiles, char *testo)
    {
    	FILE *hFile;
    	hFile = fopen(nomefiles, "w");
    	if(!hFile) {
    		/* Gestione errore*/
    		printf("Creazione/apertura del file fallita\n");
    		return;
    	}
    	printf("Salvataggio in corso......\n");
    	fwrite(testo, 1, strlen(testo)+1, hFile);
    	fclose(hFile);
    	printf("Salvataggio riuscito!\n");
    }
    
    /* Dichiarazione funzione*/
    void apri(char *cosa) {
            int ch;
            FILE *bFile;
            bFile = fopen(cosa, "rt");
    
            if(!bFile) {
    			/* Gestione errore*/
                    printf("Files inesistente\n");
                    return;
            }
    
            do {
                    ch = getc(bFile);
                    putchar(ch);
            }while((ch != EOF) && ch);
            printf("\n");
    		}
        return 0;
    }

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.