Visualizzazione dei risultati da 1 a 3 su 3

Discussione: puntatori c

  1. #1

    puntatori c

    Buongiorno a tutti,

    premettendo il mio non essere molto esperto, vi porgo questa domanda:
    semplificando un programma più complesso ho buttato giù questo codice, con il quale tramite dei valori inseriti da tastiera li salvo in un vettore a[], i quali verranno poi copiati in un vettore c[] e in fine stampati a video (vettore c[]) tramite funzioni, il problema è che non mi assegna i valori che inserisco da tastiera al vettore a[] e di conseguenza al vettore c[], ergo immagino già che la logica che ho usato per passare i valori inseriti non sia corretta, qualcuno potrebbe darmi una dritta per piacere?

    codice:
    #define lung 5
    int main()
    {
    
    
    int a[lung];
    int c[lung];
    
    
    ricevi(a, lung);
    stampa(a, lung);
    copiaestampa(c, a, lung);
    
    
    }
    
    
    int stampa(int *ap, int dim)
    {
        int i;
        for(i=0; i<dim; i++)
        {
            printf("valori di a: %d", ap[i]);
        }
        return stampa;
    }
    
    
    int copiaestampa(int *cp, int *ap, int dim)
    {
        int i,y;
    
    
        for(i=0; i<dim; i++)
        {
           cp[i] = ap[i];
        }
    
    
        for(y=0; y<dim; y++)
        {
           printf("valori di c: %d", cp[y]);
        }
       // return copiaestampa;
    }
    
    
    int ricevi(int *ap, int dim)
    {
        int i;
        for(i=0; i<dim; i++)
        {
            printf("dammi valori: ");
            scanf("%p", &ap);
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ad occhio vedo già due errore nella funzione ricevi():

    1) il segnaposto per i numeri interi è "%d" (%p non so nemmeno se sia valido")
    2) Non porti avanti il puntatore... ovvero, leggi sempre nella stessa locazione di memoria (ovvero, l'indirizzo base dell'array)

    codice:
    int ricevi(int *ap, int dim)
    {
        int i;
        for(i=0; i<dim; i++)
        {
            printf("dammi valori: ");
            scanf("%d", &ap[ i ]);
        }
    }

    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
    uuuhhh grazie mille! comunque %p lo avevo sbagliato si però funziona, serve per la stampa in esadecimale per le celle di memoria! che comunque al mio caso non serviva!
    ciao

Tag per questa discussione

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.