Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C] puntatori

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    5

    [c] puntatori =(

    #include <stdio.h>
    #include <string.h>

    void a ( char *stringa );
    void b ( char *stringa, char *campo, char op );

    main ()
    {
    char stringa[80];
    char campo[80];
    char op;

    op='\0';

    a (stringa);
    b (stringa, campo, op);

    printf("\nstringa = %s", stringa);
    printf("\ncampo = %s", campo);
    printf("\noperatore = %c", op);
    scanf(" %c");

    return(0);
    }


    void a (char *stringa)
    {
    printf("stringa = ");
    scanf("%s", stringa);
    }

    void b (char *stringa, char *campo, char op)
    {

    int h = 0;
    int i = 0;
    int exit_while = 1;

    while (exit_while != 0)
    {

    switch(stringa[h]) {
    case '*': op = stringa[i]; exit_while = 0; break;
    default: campo[h] = stringa[i]; break;
    };
    h++;
    i++;
    campo[h] = '\0';
    }

    printf("\nstringa in funzione = %s", stringa);
    printf("\ncampo in funzione = %s", campo);
    printf("\noperatore in funzione = %c", op);
    }
    output:
    stringa in funzione = stringa*stringa
    campo in funzione = stringa
    operatore in funzione = *
    stringa = stringa*stringa
    campo = stringa
    operatore =

    ci sto perdendo la testa con sti puntatori tra funzioni caratteri stringhe ecc....

    qualcuno mi sa dire come passare la var "op" in main?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    5
    ah un altra cosa io uso "dev" come compilatore mi è parso di capire che non è un gran che...

    id ( "mi è parso di capire" = true ) /* squiallida */

    me ne consigliereste un altro free per winzozz?

  3. #3
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    codice:
    /* Ti ho modificato il nome del puntatore alla variabile "op" da "op" in 
    	"punta_op" in modo tale da renderti più chiaro il funzionamento di un
    	puntatore ;)
    */
    
    #include <stdio.h>
    #include <string.h>
    
    void a ( char *stringa );
    void b ( char *stringa, char *campo, char *punta_op );/* Nota l'asterisco per "punta_op" */
    
    main ()
    {
    	char stringa[80];
    	char campo[80];
    	char op;
    
    	op='\0';
    
    	a (stringa);
    	b (stringa, campo, &op);/* Nota la & per "op", se è una variabile e non 
    	                           un array devi passare l'indirizzo ad un 
    	                           puntatore con l'operatore & */
    	                           
    
    	printf("\nstringa = %s", stringa);
    	printf("\ncampo = %s", campo);
    	printf("\noperatore = %c", op);
    	scanf("%c", &op);/* Hai dimenticato "&op" ;) 
    	                    ovviamente puoi usare
    	                    qualsiasi variabile "char"
    	                    ma.. visto che c'é "op"..;)*/
    	
    	printf("\n\n"); /* Giusto per andare a capo...*/
    	
    	return(0);
    }
    
    
    void a (char *stringa)
    {
    	printf("stringa = ");
    	scanf("%s", stringa);
    }
    
    void b (char *stringa, char *campo, char *punta_op)
    {
    
    	int h = 0;
    	int i = 0;
    	int exit_while = 1;
    	
    	while (exit_while != 0)
    	{
    
    		switch(stringa[i]) { /* Nota l'asterisco per "punta_op", questo
    			                    serve per passare un valore ad una
    			                    variabile tramite il suo puntatore.*/
    			                    
    			case '*': 
    				*punta_op = stringa[i]; 
    				exit_while = 0; 
    				break;
    			default: 
    				campo[i] = stringa[i]; 
    				break;
    		}
    		h++;
    		i++;
    		campo[i] = '\0';
    	}
    
    	printf("\nstringa in funzione = %s", stringa);
    	printf("\ncampo in funzione = %s", campo);
    	printf("\noperatore in funzione = %c", *punta_op);/* Nota anche quì l'asterisco per
                                                               leggere il valore da "op" in main */
    }
    
    /* Ho cambiato un po l'indentazione in base alle mie abitudini
    	Ciao :)
    	Gigi */
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  4. #4
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    PS : ho allargato un po il formato del 3d :quipy: , spero di essere stato chiaro e di averti dato degli spunti per approfondire le non facili tematiche dei puntatori
    Ricordati il principio che quando passi una variabile ad un puntatore devi usare & in quanto passi l'indirizzo della variabile, ricordati che un puntatore non è altro che una variabile che ha come valore un indirizzo in memoria di un'altra variabile.
    Ricordati anche che quando vuoi accedere al valore di una variabile in lettura o in scrittura tramite il suo puntatore devi mettere davanti a quest'ultimo l'operatore *.
    Bye
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    5
    grazie mille

  6. #6
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  7. #7
    Orig. inviato da Rasta

    ah un altra cosa io uso "dev" come compilatore mi è parso di capire che non è un gran che...
    id ( "mi è parso di capire" = true ) /* squiallida */
    me ne consigliereste un altro free per winzozz?
    Io personalmente non l'ho mai utilizzato
    CMQ puoi porovare il Borland Turbo C++ (è free)

    scarica i 4 pacchetti dal mio sito
    "decomprimili" con winRAR e copia tutti i file presenti nei 4 pacchetti in un'unica cartella
    poi lancia ll file INSTALL.EXE

    Il link al mio sito lo trovi in fondo (nella firma) del mio post
    clicca su [COMPILERS]

    Volendo puoi anche provare a scaricarti il DJGPP

    il link al sito è :

    http://www.delorie.com/djgpp/

    PUOI PROVARLI ENTRAMBI
    ...Terrible warlords, good warlords, and an english song

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.