Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    4

    [C]Puntatori & Struct in funzioni (help)

    Salve a tutti,
    ho una struct di questo tipo:
    codice:
    struct array{       
            char nomi[50][25];
            float prezzi[50];
    }magazzino;
    con una funzione carico le informazioni di magazzino.nomi per n volte:

    codice:
    void carica(char *p,int n){
        int i=0;
        for(i=0;i<n;i++){
                printf("\nInserire il nome del prodotto %d :",i+1);
                scanf("%s",magazzino.nomi[i]);
        }
    }
    dove il parametro (char *p) è inizializzato nel main() in questo modo:
    codice:
     char *p=magazzino.nomi;
    il mio problema è ordinare secondo il bubble sort il vettore magazzino.nomi[].
    Provando a determinare il maggiore fra il puntatore corrente e l'omonimo +25 (per portarmi al secondo elemento), in una funzione, riscontro alcuni errori es:
    codice:
    //dopo aver eseguito la funzione carica(&p):
    void ordina(char *p){
              if(*p>*(p+25)){
                       .....
               }
     }
    Bene. Questo codice mi funziona se lo uso nel main ma non funziona se lo uso in una funzione ,
    In poche parole non riesco a fare un paragone fra il puntatore di i elemento e quello di i+1 elemento.
    Può qualcuno spiegarmi il motivo?
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Paragone tra puntatori? E a che serve un confronto tra puntatori?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    4
    mi serve nel Bubble Sort per determinare se il puntatore all'elemento corrente è maggiore del puntatore all'elemento successivo per scambiare i 2 elementi. A me interessa solo sapere la sintassi in questa fase in una funzione, il resto è apposto

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No, non è a posto per niente.

    Prima di tutto non si confrontano due puntatori perché confrontare indirizzi non ha senso.

    Semmai si usa la funzione

    strcmp

    a cui si passano i puntatori delle due stringhe da confrontare e si valuta il risultato della funzione (vedi documentazione).

    Inoltre, all'interno della funzione

    void carica(char*p,int n)

    non usi mai l'argomento p dato che scrivi usando direttamente la variabile magazzino.
    Quindi potrebbe essere

    void carica(int n)

    e a questo punto la funzione ordina potrebbe fare a meno di char *p agendo anch'essa su magazzino.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    4
    Il problema è la mia conoscenza dei puntatori, credevo che char *p passasse la struttura e che strcmp potesse dare come risultato solo stringa1!=stringa2 || stringa1==stringa2.
    Adesso è tutto risolto grazie!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh, non è solo la (non) conoscenza dei puntatori. Se scrivi un parametro e non lo usi si vede che non hai chiaro l'uso degli argomenti delle funzioni.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    4
    anche

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.