Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] scelta da menu

    con uno switch voglio gestire la selezione da menu però quando digito la parola che corrisponde al numero della selezione mi da diversi errori e non capisco perchè!
    poi nella selezione "togliere" vorrei togliere una riga di un file dove vi è quella parola precisa che scelgo con selezione dalla tastiera e nella selezione "cerca" dovrei cercare e stampare su nuovo file quella riga contenente quella parola (cognome)!

    come posso modificare in modo corretto il codice?

    sono alle prime armi del c si capisce chiaramente perciò sarei lieto ricevere supporto in merito. grazie!

    codice:
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h>
     #define MAXS 20 
    typedef struct Persona {
     char nome[20];
     char cognome[20];
     char indirizzo[20];
     int telefono;
     char nota[20];
     } persona; 
    int main() {
     FILE*fp,*fp2;
     int scelta; persona info; 
    char file[MAXS];
     int inserire,togliere,cercare,coppie,altro;
     char file2[MAXS];
     int i; 
    printf("inserire nome file:");
     gets(file);
     char cognomex[20];
    
     fp=fopen(file,"r");
     if(fp==NULL) {
            printf("impossibile aprire file %s",file);
            return -1; } printf("inserire nome file in scrittura:"); 
    
    gets(file2);
     fp2=fopen(file2,"w");
     if(fp2==NULL) {
             printf("impossibile la scrittura \n"); 
               return -2; 
    } 
    i=0;
     '1'=inserire;
     '2'=togliere;
     '3'=cercare;
     '4'=coppie;
     '5'=altro;
    
     printf("seleziona menu la scelta per la selezione:\n");
     scanf("%s",&scelta);
    
     while(fscanf(fp,"%s-%s-%s-%d-%s\n",info.nome,info.cognome,info.indirizzo,&info.telefono,info.nota)!=EOF) {
    
          switch(scelta) {     
    case '1': 
    printf("inserisci nome :"); 
    scanf("%s",info.nome); 
    printf("inserisci indirizzo: \n"); 
    scanf("%s",info.indirizzo);
     printf("inserisci telefono: \n");
    scanf("%d",&info.telefono); 
    printf("inserisci nota: \n"); 
    scanf("%s",info.nota); 
    fprintf(fp2,"%s-%s-%s-%d-%s",info.nome,info.cognome,info.indirizzo,&info.telefono,info.nota); 
    break;
     case '2': 
    printf("persona da togliere:"); 
    scanf("%s",cognomex); 
    if(strcmp(info.cognome,cognomex)==0)
     fprintf(fp2,"%s-%s-%s-%d-%s",info.nome,info.cognome,info.indirizzo,&info.telefono,info.nota);
     break; case '3': printf("inserisci nome da cercare:\n"); 
    scanf("&s",cognomex); 
    if(strcmp(info.cognome,cognomex)==0)
     fprintf(fp2,"%s-%s-%s-%d-%s",info.nome,info.cognome,info.indirizzo,&info.telefono,info.nota);
     break; 
    case '4':
     fprintf(fp2,"%s-%s",info.nome,info.cognome);
     break; 
    case '5': 
    fclose(fp);
     break;
     default: printf("voce non trovata\n");
     break;
     } 
    }
     i++;
     fclose(fp);
     fclose(fp2);
     return 0;
     }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ho capito che sei alle prime armi ma questo

    '1'=inserire;
    '2'=togliere;
    '3'=cercare;
    '4'=coppie;
    '5'=altro;

    non è sintassi del C ...

    Bisogna conoscere le basi più elementari prima di partire a programmare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    hai ragione infatti non sapevo che fare! perchè se con una scanf selezionavo



    scanf("%d",scelta)[/CODE]

    switch(scelta){

    case 'aggiungere':
    printf("aggiungi nome:\n);
    scanf("%s",nome);
    }[CODE]

    mi dava errore allo switch..
    levando quella cosa che ho scritto
    '1'=inserire;
    '2'=togliere;
    '3'=cercare;
    '4'=coppie;
    '5'=altro;

    non è sintassi del C ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jonnyforever
    scanf("%d",scelta)[/CODE]

    switch(scelta){

    case 'aggiungere':
    http://programmazione.html.it/guide/...uzioni-switch/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ti consiglio di non buttare lo switch tutto nel main, fatti una funzione come questa:
    codice:
    int menu(void)
    {
        int k=0;
        bool error=false;
        char buffer[100];
        while(k<1 || k>9)
        {
            if(error==true)
                printf("\nErrore, digitare un numero compreso tra 1 e 9\n");
            else
            {
                printf("\nMenu' :\n");
                printf("1)Aggiungi aeroporto \n");
                printf("2)Aggiungi arco \n");
                printf("3)Cancella aeroporto\n");
                printf("4)Cancella arco\n");
                printf("5)Visualizza aeroporti\n");
                printf("6)Visualizza aeropoerti raggiungibili\n");
                printf("7)Visualiza percorso di costo minimo\n");
                printf("8)Visualizza percorso di distanza minima\n");
                printf("9)Uscita\n");
            }
            fgets(buffer,100,stdin);
            k=atoi(buffer);
            error=true;
        }
        return k;
    }
    (ovviamento cambiando il contenuto e le scelte)
    E poi chiami la funzione all' interno del main.

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.