Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C]funzione e ordinamento di stringhe

    ho dei problemi con una funzione che dovrebbe ordinare delle stringhe, credo di sbagliare con i puntatori.
    codice:
    #include <stdio.h>
    #include <string.h>
    
    void chiedi_val(char (*ptr)[30]){  //funzione per inserimento stringa
    	printf ("inserisci una stringa\n");
            scanf("%s", ptr);
    	
    	}
    void ordina(char (*ptr)[30]){ //funzione che dovrebbe ordinare
    	int k,i; char tmp[30];
    	k=4;
    	while (k>0)
                    for(i=0;i<4;i++){
    			if (strcmp( ptr[i], ptr[i+1])>0){
                            strcpy (tmp, ptr[i]);
    			strcpy (ptr[i], ptr[i+1]);
    			strcpy (ptr[i+1], tmp);}
    			}
    		k--;
    	}
    
    void main(){  //main
    	int i;
    	typedef char  vettore[30] ;
    	vettore vettori[4];
            for (i=0; i<4;i++){
    		chiedi_val( &vettori[i] );
    		}
            for (i=0; i<4;i++)
    	printf ("%s\n",vettori[i]);
            printf("######################\n\n");
    	ordina(vettori); 
    	printf("######################\n\n");
    	
    	for (i=0; i<4;i++)
    	printf ("%s\n",vettori[i]);
    
    	}

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    forse avrei dovuto usare la funzione malloc?

  3. #3
    void chiedi_val(char (*ptr)[30]){ //funzione per inserimento stringa
    printf ("inserisci una stringa\n");
    scanf("%s", ptr);


    due domande: perke' *ptr e' tra parentesi?
    seconda domanda: ptr e' un array di stringhe, come mai inserisci un valore solo alla prima posizione dell'array?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    alla seconda domanda ti rispondo dicendoti: non sto inserendo il primo, 30 sono il numero di caratteri in questo caso, forse avrei dovuto mettere solo char (*ptr)[]


    le tonde le ho messe altrimenti dichiaro non un puntatore a vettore di caratteri, ma un vettori di puntatori a caratteri

  5. #5
    ma li non dichiari niente, e' la definizione del parametro per la funzione
    e se metti char * ptr dovrebbe bastare o se preferisci char ptr[30] (nn so se il 30 vada bene o no) cmq gia' cosi' e' sottointeso che sono dei puntatori

    char ptr[30]

    ptr e' il puntatore all'array

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