Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [C++] Errore fprintf

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121

    [C++] Errore fprintf

    Ciao, premetto che nn ho capito molto bene il funzionamento di fprintf, fscanf e altri, sia leggendo qui su html.it le guide sia cercando in google.. vi posto il codice e vi cheido se gentilmente sapreste diurmi che errori ho fatto:

    #include <iostream>
    #include <string>
    #include <stdio.h>

    using namespace std;

    int main ()
    {
    FILE *read;
    string text;
    string title;

    cout << "Inserisci un titolo: ";
    getline(cin, title);
    cout << "Inserisci il testo:" << endl;
    getline(cin, text);

    string c = title + ".txt";

    read = fopen(c.c_str(),"w");
    fprintf(read, "%s", text);
    fclose(read);

    system("PAUSE");
    return 0;
    }
    ciaooo e grazie...

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da MacApp
    Come minimo non controlli il valore restituito dalla fopen.
    quoto
    e cmq sta utilizzando una libreria standard del C
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    esiste un altro mdodo per fare tutto c++? come controllare il valore?

  5. #5
    Alla fprintf passi una std::string, non un const char*.
    Usa il metodo std::string::c_str():
    codice:
    fprintf(file, "%s", string.c_str());

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    ok, con il char funziona... adesso vorrei provare ad utilizzare una classe per fare piu azioni, il problema é che mi visualizza quello ceh dovrei visualizzare tutto in un colpo, es: inserisci il testo prima e poi inserisci il titolo ma in seguenza.. invece stampa tutto insieme cosi che mi prende il titolo "" e il testo il 2° e unico testo che possso inserire, vi mostro cosa faccio:

    class execute
    {
    public:
    void writer(FILE *read,string text,string title)
    {
    cout << "Inserisci un titolo: ";
    getline(cin, title);
    cout << "Inserisci il testo:" << endl;
    getline(cin, text);

    string c = title + ".txt";

    read = fopen(c.c_str(),"w");
    fprintf(read, "%s", text.c_str());
    fclose(read);
    }
    };

    int main ()
    {
    FILE *read;
    string text;
    string title;

    string what;
    execute mainExecute;

    cout << "Vuoi scrivere, leggere o modificare? [w/r/e]";
    cin >> what;

    if (what == "w") {
    mainExecute.writer(read,text,title);
    }

    system("PAUSE");
    return 0;
    }
    il problema é quello che ho speigato, é possibile fare una cosa del genere? anche se nn é utile solo per provare ad utilizzare le classi? vorrei fare 3 azioni, scrivere leggere e modificare, so che é abb lungo e che nn sono ancora molto bravo ma ci provero, e volevo farlo appunto ma nn solo con gli if, magari implementandoci anche qualcos'altro.. grazie mille delle risposte.. ciaooo


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    Nessuno sa aiutarmi?

  8. #8
    codice:
    #include <iostream>
    
    using namespace std;
    
    //L'implementazione deve essere esterna alla classe
    class execute {
    
    public:
       void writer();
    
    };
    
    void execute::writer() {
    
       ofstream read;
       string title;
       string text;
    
       cout << "Inserisci un titolo: ";
       getline(cin, title);
    
       cout << "Inserisci il testo:" << endl;
       getline(cin, text);
    
       title += ".txt";
    
       read.open(title);
    
       if(!read.is_open()){
    
          cerr << "File non aperto" << endl;
          return;
    
       }
    
       read << text;
    
       read.close();
    
    }
    
    int main () {
    
       string what;
       execute mainExecute;
    
       cout << "Vuoi scrivere, leggere o modificare? [w/r/e]";
       cin >> what;
    
       if (what == "w") {
    
          mainExecute.writer();
    
       }
    
       //NON USARE system !!!
       /system("PAUSE");
       puts("Premi un tasto per continuare ...");
       while(!getchar());
    
       return 0;
    
    }
    Poi mi spieghi che senso ha un'oggetto con una sola funzione ? E che ruolo ha ?

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    nn so, volevo provare ad usare qualcos'altro oltre a if ed else... nn so rispondere alla tua domanda, mi sa che mi vonvenga provare a seguire un libro guida

    mi puoi fare un esempio di quello che potrei fare per rendere effettivamente utile l'oggetto? Da quello che ho capito con una sola funzione nn serve a nulla...

    [ultima domanda OT]
    se qua uso: char what[1];
    al posto di string what;

    cosa al posto di questo:
    if (what == "w")

    cosi nn va...

    [/OT]

    Grazie di tutto... ciaooo..

  10. #10
    Ma un'array di un byte che senso ha ?
    codice:
    char what;
    
    if(what == 'w'){
       //blabla
    }
    Nel tuo caso la programmazione ad oggetti non ha molto senso. Insomma il tuo programma non fa niente di speciale.


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.