Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [C++] confrontare vettori con caratteri

    codice:
    struct locazione
     {
        char comune[31];
        char provincia[3]; 
     }
    come faccio a confrontare un vettore con un insieme di caratteri?

    ad esempio vedere se quello che c'è in char comune è uguale a 'aviano', se è uguale allora in provincia devo memorizzare 'pn'.

    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Studia e usa la funzione

    strcmp

    e simili
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    strcmp confronta 2 stringhe.
    io devo confrontare un vettore con un insieme di caratteri

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da lucaccccc
    strcmp confronta 2 stringhe.
    io devo confrontare un vettore con un insieme di caratteri
    E' la stessa cosa ...

    Ci hai provato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    forse avrò sbagliato a scriverla, io avevo fatto così:


    codice:
    if (strcmp(comune[],'aviano')==0)
    provincia[]='pn';

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da lucaccccc
    forse avrò sbagliato a scriverla
    Direi proprio che hai sbagliato ... deve essere

    codice:
    if (strcmp(comune, "aviano")==0)
        strcpy(provincia, "pn");
    Studia meglio le funzioni di gestione delle stringhe ... (strcmp, strcpy ...)

    Tra l'altro, queste sono funzioni caratteristiche del C ... dato che hai postato per il linguaggio C++, dovresti sapere che in quel caso le cose sono diverse e si usano gli oggetti di classe

    string
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    codice:
    struct locazione
    {
      char comune[31];
      char provincia[3];  
    
        if (strcmp(comune, "aviano")==0)
        strcpy(provincia, "pn");
    
    }
    facendo così mi da parse error prima di if

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma che scrivi il codice all'interno di una struct?

    Il codice va all'interno di una "funzione" (che sia il main o altro ...).


    Questo significa che non hai nessuna conoscenza di base del linguaggio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ho risolto grazie..il problema ora e che facendo girare il programma mi da segmentation fault.
    il programma è questo:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    struct locazione
    {
      char comune[31];
      char provincia[3];  
    }
    ;
    
    void appartenenza_comune(char lista[],struct locazione vett[],int n,char provincia[])
    {
      int n_appartenenza, i=0, j=0, giorno, mese, anno, k;
      char nome[50], cognome[50];
      FILE* fp;
    
      fp = fopen(lista,"r");
      
      fscanf(fp,"%d",&n_appartenenza);
    
      while((nome[i] = getc(fp))!=',')
      {
        i++;
        nome[i]='\0';
        i++;
      }
      
        while((cognome[j] = getc(fp))!=';')
        {
          j++;
          cognome[j]='\0';
          i=i+j;
        }
      
          while(fscanf(fp,"%d%*s%d%*s%d%*s%s",&giorno,&mese,&anno,vett[i].comune))
          
           if (strcmp(vett[i].comune, "aviano")==0)
        strcpy(vett[i].provincia, "pn");
          
      for(k=0;k<n;k++)
      {
        if( vett[i].provincia == provincia)
        printf("%s %s (%d)\n",nome, cognome, &n_appartenenza);
      
      }
      fclose(fp);
    }
    ;
    
    int main()
    {
      int n;
      struct locazione vett[n];
      char provincia [3],lista[40];
    
      printf("inserisci nome file:");
      scanf("%s",lista);
      printf("inserisci lunghezza struct locazione");
      scanf("%d",&n);
      printf("inserisci la provincia:");
      scanf("%s",provincia);
      
      appartenenza_comune (lista,vett,n,provincia);
      return 0;
    }

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da lucaccccc
    il problema ora e che facendo girare il programma mi da segmentation fault.
    In quale riga? Ovvero, quando?

    E comunque, questa if

    if( vett[i].provincia == provincia)

    non ha il senso che pensi tu ... per confrontare le stringhe non devi usare == ma, ripeto, la funzione strcmp

    L'errore pero' dipende da un puntatore sballato o dall'uso sbagliato di un indice in un vettore ... puo' anche dipendere da quello che leggi dal file ... cosa contiene esattamente il file ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.