Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    12

    programmazione in C

    Salve ragazzi.Volevo chiedere se in C è possibile ,leggere da un file dei numeri e questi numeri memorizzarli in un array.
    io ci ho provato ma quando faccio un printf dell'array , succede che mi stampa dei valori casuali.
    Ecco qua il codice

    numeri.txt = 1 2 3 4 5 6 7

    #include<stdio.h>

    int main () {
    FILE *pf;
    int a[] = {} ;
    int i = 0;
    int j;

    pf = fopen("numeri.txt", "r");
    if (pf) {
    while (!feof(pf)) {
    fscanf(pf,"%d\t", a);
    i++;
    }
    printf("Numero di elementi nel file di testo : %d\n",i);
    for(j=0; j<i; j++) {
    printf("%d\n", a[j]);
    }
    fclose(pf);
    }
    else
    printf("errore durante l'apertura del file.");
    }


    Il risultato è questo:

    Numero di elementi nel file di testo : 7
    7
    4079240
    4079200
    8
    2009116333
    1108018478
    30074582

    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: programmazione in C

    Originariamente inviato da mzsd34
    while (!feof(pf)) {
    fscanf(pf,"%d\t", a);
    i++;
    }
    }
    Tu leggi un intero alla volta (c'è un solo %d), ma a è un intero?

    Inoltre int a[] = {}; non mi convice molto, in questo modo stai dichiarando un array vuoto costante (se ricordo bene) :master:

    ps: usa il tag CODE o non si capisce nulla
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    12
    codice:
    #include<stdio.h>
    
    int main () {
         FILE *pf;
         int a[] = {} ;
         int i = 0;
         int j;
         
         pf = fopen("numeri.txt", "r");
         if (pf) {
                 while (!feof(pf)) {
                       fscanf(pf,"%d\t", a);
                       i++;
                       }
                       printf("Numero di elementi nel file di testo : %d\n",i);
                       for(j=0; j<i; j++) {
                                printf("%d\n", a[j]);
                                }
                       fclose(pf);
                 }
                 else
                 printf("errore durante l'apertura del file.");
    }
    la variabile 'a' è un array, comunque anche se l'array lo inizializza ( int a[6]), ugualmente non mi restituisce i valori desiderati.

  4. #4
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    ciao...ho dato una occhiata al programma...e mi sa che hai un pò di confusione in testa! perchè quello che vuoi fare è fattibilissimo, però non come lo fai tu!!
    codice:
     int a[] = {} ;
    questo non ha molto senso...in genere se nn sai quanti elementi ci sono in un file, conviene creare un puntatore, leggere una prima volta il file per vedere il numero di valori da memorizzare nell'array, e così allocare l'array della dimensione corretta per la memorizzazione dei dati.
    quindi al massimo faresti così:
    codice:
    int *a;
    ...
    a = (int*)malloc(N_valori*sizeof(int));
    nel tuo caso comunque, supponendo che hai 6 numeri da leggere allora il codice verrebbe in questo modo:
    codice:
    #include<stdio.h>
    
    int main () {
         FILE *pf;
         int a[6];
         int val;
         int i = 0;
         int j;
         
         pf = fopen("numeri.txt", "r");
         if (pf) {
                 while (!feof(pf)) {
                       fscanf(pf,"%d", &val);
                       a[i] = val;
                       i++;
                 }
                 printf("Numero di elementi nel file di testo : %d\n",i);
                 for(j=0; j<i; j++) {
                          printf("%d\n", a[j]);
                          }
                       fclose(pf);
         }
         else
         printf("errore durante l'apertura del file.");
         system("pause");
    }
    Se ci sono problemi, o non mi sono spiegato bene...chiedi pure!
    ciao!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    12
    Guarda ti sei spiegato benissimo e sei stato gentilissimo.Non so come ringraziarti.
    Funziona tutto bene, anche se il problema serio ora è un altro.
    Perchè tutto sommato io dovevo aprire una fotografia estrarre il codice decimale e stampare il tutto su un file creato da me.Cioè il risultato è un'altra foto uguale.
    ma ora il problema è che devo dividere questa fotografia in blocchi(es: divido l'immagine in 16*16).

    Non so se posso farti un'altra domanda , ci provo.
    In C è possibile dividere l'immagine?
    A presto, grazie tante per la disponibilità

    codice:
    #include <stdio.h>
    
    int main() {
    
        const int dim = 40000 ;
        FILE *immagineCaricata, *immagineCreata;
        int i = 0;
        int numeri[dim] ;
        int val;
        int j=0;
        int a ;
        
       
        immagineCaricata = fopen("colline.jpg", "rb");
        immagineCreata = fopen("risultato.jpg", "wb");
        if(immagineCaricata) {                        
            while(!feof(immagineCaricata)) {
                fread(&val ,sizeof(char)  ,1 ,immagineCaricata); 
                numeri[j] = val;
                j++;
                }
                 for(a=0; a<j; a++) {
                         fprintf(immagineCreata, "%c", numeri[a]);
                         }
                fclose(immagineCaricata);
                printf("Step_3\n"); 
                fclose(immagineCreata);
                printf("Bitmap creata\n");
                system("start risultato.jpg");
                system("pause");
                return 0;
               
        } else
           printf("L'immagine non è stata caricata\n");                  
                 
    }

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Suggerisco l'utilizzo di titoli più significativi per le discussioni future, come indicato nel Regolamento.

    Qui ho provveduto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    12
    Moderatore ,non so cosa significa quello che hai scritto.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da mzsd34
    Moderatore ,non so cosa significa quello che hai scritto.
    Beh ... mi sembra che abbia scritto chiaramente ...

    "Programmazione in C" non è un titolo che faccia capire qual è l'oggetto della tua richiesta. Non credi?


    E poi, lo hai letto il Regolamento?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    12
    Il mio problema l'ho risolto , aspettavo solo una risposta da MRX ..

    scusate professori.A presto

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da mzsd34
    Il mio problema l'ho risolto , aspettavo solo una risposta da MRX ..

    scusate professori.A presto
    Nessun professore da questa parte. Solo gente normale.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.