Visualizzazione dei risultati da 1 a 4 su 4

Discussione: liste e stringhe in c

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    20

    liste e stringhe in c

    char** strs = (char**)malloc(sizeof(char*) * count);
    for(i = 0; i < count; i++)
    {
    strs[i] = (char*)malloc(sizeof(char) * SIZE);
    char* value = pun->cognome;
    strcpy(strs[i], value);
    pun = pun->succ;
    }
    /*
    int j=0;
    char* minore;
    char* maggiore;
    char* scambio;
    int scmabia = 0;
    for(i = 0;i < (count-1); i++)
    {
    int scambia = 0;
    for(j=i+1;j<count;j++)
    {
    if(strs[j] < strs[i])
    minore = strs[j];
    scambia = 1;
    }
    if (scambia == 1)
    {
    maggiore = strs[i];
    strs[i] = minore;
    strs[j] = maggiore;
    strcpy(strs[i],minore);
    strcpy(strs[j],maggiore);
    }
    }*/
    for(i = 0; i < count; i++)
    printf(">> %s <<\n", strs[i]);
    for(i = 0; i < count; i++)
    free(strs[i]);
    free(strs);


    Qualcuno ha una vaga idea del perchè non funzioni questo pezzo di codice?????
    Io leggo da file una lista di cognomi e nomi.....
    creo dinamicamente la lista e tengo il conto di quanti ne ho letti (count)
    ora devo ordinare il file
    quindi salvo in un vettore tutti i cognomi strs [count] [SIZE] (impostato = 20)
    perchè non risco a fare gli scambi????? avete un'idea????

    Grazie a tutti per il vostro aiuto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Usa i tag CODE quando posti i codici ... altrimenti nessuno potrà leggere e rispondere ....
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    20
    Help....non so come fare....non c'è un Tag per il C...
    o forse non lo vedo io

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    20

    vediamo se ho capito

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <string.h>
    
    #define SIZE 20
    
    typedef struct nodo{
           char cognome[20];
           char nome[20];
           char telefono[20];
           struct nodo *succ;
           }agenda;
    
    int main()
    {
      agenda *k, *pun;
      FILE *rubrica;
      int count = 0,i = 0;
      
      
      if ((rubrica = fopen("agenda.txt", "r")) == NULL)
      {          
          printf("Il File che stai cercando di aprire non esiste\n");
      }
      else
      {
          k = (agenda *)malloc(sizeof(agenda));
          if(k==NULL)
          { 
              printf("Memoria esaurita\n");
          }
          else
          {
              fscanf(rubrica,"%s",k->cognome);
              fscanf(rubrica,"%s",k->nome);
              fscanf(rubrica,"%s",k->telefono);
              pun = k;
              count++;
              while(!feof(rubrica))
                {
                  pun->succ = (agenda *)malloc(sizeof(agenda)); 
                  pun = pun->succ ;               
                  fscanf(rubrica,"%s",pun->cognome);
                  fscanf(rubrica,"%s",pun->nome);
                  fscanf(rubrica,"%s",pun->telefono);
                  count++;
                }
              pun->succ = NULL;
              printf("Numero di record trovati: %d\n",count);
              pun = k;
              do   
              {                                   
                    printf("\nNome: %s\t Cognome: %s\t Telefono: %s\t\n",pun->nome,pun->cognome,pun->telefono);
                    pun=pun->succ;                
              }while(pun != NULL);
              pun = k;
              char** strs = (char**)malloc(sizeof(char*) * count);
              for(i = 0; i < count; i++) 
              { 
                strs[i] = (char*)malloc(sizeof(char) * SIZE); 
                char* value = pun->cognome; 
                strcpy(strs[i], value); 
                pun = pun->succ;
              } 
              
              int j=0;
              char* minore;
              char* maggiore;
              char* scambio;
              int scmabia = 0;
              for(i = 0;i < (count-2); i++)
              {
                 int scambia = 0;   
                 for(j=i+1;j<(count-1);j++)
                    {
                        if(strs[j] < strs[i])
                           minore = strs[j];
                           scambia = 1;  
                    }
                 if (scambia == 1)
                 {
                    maggiore = strs[i];
                    strs[i] = minore;
                    strs[j] = maggiore;
                    strcpy(strs[i],minore);
                    strcpy(strs[j],maggiore);            
                 }   
              }
              for(i = 0; i < count; i++) 
                      printf(">> %s <<\n", strs[i]);   
              for(i = 0; i < count; i++) 
                    free(strs[i]); 
                    free(strs); 
        
          }
      }
      
    
      fclose(rubrica);
      printf("\n");
      system("PAUSE");	
      return 0;
    }

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.