Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    C[allegro] caricare file txt

    Ciao,
    è la prima volta ke posto su questo forum.
    volevo sapere se alcuni di voi sanno usare allegro e quindi se caricare un testo è uguale a come si fa normalmente.io ho fatto una procedura ke caricava il testo come so fare io(con getc) e poi l'ho chiamata in un'applicazione allegro, ma il programma mi da errore runtime...
    se mi sono spiegato bene come posso fare?grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,307

    Moderazione

    Dovresti anche specificare che errore ti dà, altrimenti come si fa ad aiutarti a risolvere il problema?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    parte mi apre la finestra dos e allegro e ad un certo punto mi da errore:si è verificato un errore in prog.exe nn dice altro

  4. #4
    Posta il codice dell'applicazione... uno a dieci che è un puntatore non inizializzato correttamente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    scusate il disordine e l'assenza di commenti



    #include <stdio.h>
    #include "allegro.h"
    BITMAP *buf;


    void file()
    {
    FILE *file;
    char ch;
    char frase[50];
    int pos=0;

    file=fopen("compito.txt", "r");

    while ((ch=getc(file)) != '%')
    {
    frase[pos]=ch;
    pos=pos+1;
    }
    frase[pos]='\0';
    sprintf("%s\n",frase);
    textout(buf, font, frase, 1, 1, 255);

    fclose(file);
    }

    int main()
    {
    allegro_init();
    install_keyboard();
    buf = create_bitmap(640, 480);
    clear(buf);
    set_gfx_mode(GFX_SAFE, 640, 480, 0, 0);
    while(!key[KEY_ESC])
    {
    file();
    }
    return 0;
    }
    END_OF_MAIN();

  6. #6
    codice:
    while ((ch=getc(file)) != '%')
        {           
         frase[pos]=ch;
         pos=pos+1;
        }
     frase[pos]='\0';
    Questo fai prima a scriverlo così:
    codice:
    fscanf(file, "%49s%%", frase);
    così si evitano anche i buffer overflow (che forse erano la causa dell'errore).
    codice:
    sprintf("%s\n",frase);
    Questo non ha molto senso... dai un'occhiata alla documentazione della sprintf.

    Per il resto non ti so dire altro... non conosco le funzioni della tua libreria allegro.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    adesso nn da errori ma nn manda niente sullo schermo(ho usato textout per visualizzare...)

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    ho risolto grazie per l'aiuto!!

  9. #9
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    ho notato ke stampa solo lettere attaccate.se c sono due parole o + come faccio a stamparle sullo schermo?

  10. #10
    Prova così:
    codice:
    fscanf(file, "%49[^%%]", frase);
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

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.