Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194

    [C]Problema nell'input di stringa

    Ho un problema nell'input di stringhe, ecco il codice:

    codice:
            char giocatore1[16], giocatore2[16];
            printf("\n\n\tInserire il nome del giocatore 1: ");
            scanf("%[^\n]", &giocatore1);
            system("cls");
            printf("\n\n\tInserire il nome del giocatore 2: ");
            scanf("%[^\n]", &giocatore2);
            system("cls");
    In questo modo quando il programma incontra la scanf non si ferma e aspetta il mio input, ma assegna immediatamente dei valori assurdi alle due stringhe. Come risolvo?
    p.s. %[^\n] lo uso per far accettare alla stringa anche gli spazi.

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Innanzitutto devi scrivere

    giocatore

    e non

    &giocatore

    e poi non capisco cosa significhi

    "%[^\n]"

    se sei sicuro di quello che hai scritto ok, se no sostituisci con

    "%s"

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194
    codice:
    %[^\n]
    significa che la stringa può accettare tutti i valori, compresi gli spazi, tranne l'andata a capo, che non è altro che l'invio.
    Se faccio come mi hai detto tu non posso inserire una stringa che contiene degli spazi, perchè ad esempio se scrivo: Oba Martins
    Oba lo da a giocatore1 e martins a giocatore2.

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ok, avevo detto che non conoscevo la notazione, comuqnue vedi se effettuando la prima notazione il problema si risolve.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    mi sa che comuqnue devi mettersci la 's' per indicare che acquisisci una stringa, perche nella reference della scanf il formato della stringa è indicato come:

    %[*][width][modifiers]type

    quindi la stringa dovrebbe essere "%[^\n]s"

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194
    Non funzia lo stesso. Ho provato in tutti i modi che mi hai detto.

  7. #7
    char giocatore1[16];

    printf("\n\n\tInserire il nome del giocatore 1: ");

    scanf("%s", &giocatore1);

  8. #8
    Originariamente inviato da sky_451
    Non funzia lo stesso. Ho provato in tutti i modi che mi hai detto.
    che io sappia quella cosa che dici te: [^\n] ... nnon esiste.. o almeno a me non funzia


    io epr fargli accettare anche gli spazi faccio:

    codice:
    char giocatore[100];
    int i;
    char ch;
    
    printf("\n\n\nInserisic sto ca**o di nome: ");
    ch=getchar();
    for( i = 0; (i < 100) &&  ((ch = getchar()) != '\n') ; i++ )
    giocatore[i] = ch;
    giocatore[i] = '\0';

    cosi funge... ma ho anche aperot un topic per sapere se c è un modo piu breve

  9. #9
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194
    si swiss così funzia ma cazzarola è un po' lungo.
    vediamo nell'altro topic se qualcuno lo sa.

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non c'è bisogno di tutte quelle righe di codice; come ho detto nell'altro thread va bene cosi:


    char string [100];
    fgets(string , 100 , stdin);


    attento ceh non devi mettere la & se passi un array!

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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.