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

    [C] Puntatori in una funzione [Problema]

    Premetto che sono al primo esame all'uni e sono alle prime armi.

    codice:
    #include <stdio.h>
    #include <string.h>
    char tenta[3];
    char uj[3];
    
    
    void confronto (char *s,char *f,int v,int *n,int z){
        v=3;
    
        char *esatto="gas";
    
        if((strcmp(s,esatto))==0){
            strcpy(f,esatto);
            n=&v;
            z=*n;
    
        }
    
    }
    
    
    int main(){
    
        int *h;
        int j;
        int z;
    
        scanf("%s",tenta);
        confronto(tenta,uj,j,h,z);
    
        printf("HIHII %s %d",uj,z);
    //    if(h=1){
    //        printf("gas %s",&uj);
    //    }else{
    //        printf("lol");
    //    }
    }
    

    Il codice funziona in parte,ovvero mi compara le stringhe e mi riporta il risultato esatto ma vorrei che nel printf mi stampasse anche quel benedetto z,ovvero 3 che ho definito nella funzione non mi stampa 3 ma numeri casuali o ovviamente l'indirizzo di memoria,ho provato di tutto ma non riesco a far stampare quel maledetto valore.

    Grazie in anticipo

  2. #2
    Sei fortunato che quel codice funzioni ci sono svariati errori, a cominciare dalle stringhe che dichiari, decisdamente troppo corte.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    I parametri vengono passati per valore. Usa un puntatore:
    codice:
    void confronto(char *s, char *f, int v, int *n, int *z) {
    //...
    *z = *n;
    /...
    }
    Nel main
    codice:
    confronto(tenta, uj, j, h, &z);

    Nota comunque che in confronta non ti serve in alcun modo il 4° parametro.

    edit: vero, ci sono le stringhe troppo corte;
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    7
    La lunghezza delle stringhe l'ho regolata in base ai caratteri che mi servivano cioè 3,come mai sono troppo corte?

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    In C una stringa è composta da i caratteri che contiene + il sterminatore di stringa (carattere '\0'). Perciò per una stringa di 3 caratteri ti servono 4 caratteri. "gas" è composto da {'g', 'a', 's', '\0'}
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    7
    Giusto!,grazie ancora per l'aiuto ho risolto il problema,una domanda stupidissima di cui immagino di sapere già la riposta ma non ne son tanto sicuro,perchè all'ultimo parametro puntatore della mia funzione devo aggiungere & e al puntatore intero h non ne ho bisogno?
    Grazie per la pazienza!

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    h è di tipo int * mentre z è di tipo int.

    Ripeto comunque che il quarto parametro è completamente inutile. Prova a pensare perché.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    7
    Sisi ho capito infatti l'ho eliminato,ritornando alle variabile se invece dichiaro z come *z non servirebbe &?

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.