Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261

    aiutatemi perfavore

    aiuto perfavore sto impazzendo....ho sempre usato altri linguaggi di programmazione:java ,pascal.....eccc ma mai il C....ho piccolo ma allostesso tempo enorme problema eseguo questo progamma banale ma non fa quello che dovrebbe fare:

    #include <stdio.h>

    main()
    {
    char vet[3];
    int i;
    for (i=0;i<3;i++)
    {
    scanf("%c",&vet[i]);
    }

    for (i=0;i<3;i++)
    {
    printf("%c",vet[i]);
    }
    system("pause");
    }

    è banalissimo leggi da tastire dei caratteri e li mette in un vettore dopo di che stampa

    dovrebbe eseguire lo scanf e il printf 3 volte per i=0,1,2 ma lo esegue solo due volte e nel caso in cui metto \n nello scanf esegue lo scan f più di 3 volte cioè 4


    perchè sto impazzendo!!!!!!

  2. #2

    Re: aiutatemi perfavore

    Originariamente inviato da aspire1982
    ...
    è banalissimo leggi da tastire dei caratteri e li mette in un vettore dopo di che stampa

    dovrebbe eseguire lo scanf e il printf 3 volte per i=0,1,2 ma lo esegue solo due volte e nel caso in cui metto \n nello scanf esegue lo scan f più di 3 volte cioè 4
    ...
    Dato che inserisci tu stesso i caratteri nella stringa, devi anche farti carico della sua
    corretta terminazione.
    Aggiungi :
    codice:
    	vet[i]='\0';
    dopo il primo ciclo for().
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    e se nono voglio farmi carico come faccio che funzione uso

  4. #4
    Acquisisci direttamente una stringa.
    codice:
    #include <stdio.h>
    
    int main()
    {
    	char vet[80];
    	scanf("%s", vet);
    	printf("\nHai digitato '%s'", vet);
    	getchar();
    	return 0;
    }
    E così ci penserà la scanf() a mettere il terminatore.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Ho modificato il titolo perchè non era conforme al regolamento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    comunque anche come dici tu no va bene !!!mentre ho risolto con fflush(stdin)..... lo scanf noto che si ingrippa se dopo non usi fflush(stdin);

  7. #7
    Originariamente inviato da aspire1982
    comunque anche come dici tu no va bene !!!mentre ho risolto con fflush(stdin)..... lo scanf noto che si ingrippa se dopo non usi fflush(stdin);
    Che centra la fflush()?
    Se hai risolto mi fa piacere, ma dal messaggio originale (in vero abbastanza stringato e un pò sgrammaticato)
    non si è ben capito quale fosse effetivamente il problema.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    comunque per sfizio compialo con un compilatore C qualunque ...io l'ho provato anche sotto linux con il GCC e niente tutto tace finche non metto fflush(stdin); dopo lo scanf ...provare per credere..........

  9. #9
    Che ne dici di spiegare, molto dettagliatamente, cosa dovrebbe fare il codice...
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    comunque ho risolto comunque ora ti spiego:......

    #include <stdio.h>

    main()
    {
    char vet[3]; qui creo un vettore di 3 caratteri
    int i;
    for (i=0;i<3;i++)
    {
    scanf("%c",&vet[i]); questo scanf legge da tastiera un carattere per volta[%c] e
    } lo inserisce nel vettore creato sopra (con gli indici scanditi dal for)

    for (i=0;i<3;i++) una volta inseriti i caratteri nel vettore
    {
    printf("%c",vet[i]); questo printf deve stampare i caratteri trovati in vet[i]
    }
    system("pause"); una semplice pausa
    }

    se provi questo programma non funziona correttamente .... si impalla solo quando gestisci un vettore di char .....mentre se gestisci un vettore di int tutto ok il programma funziona benissimo.

    prova per sfizio sia mettendo char vet[3].....che mettendo int vet[3]....ovviamente quando metti int vet[3] sostituisci %c con %d nello scanf e in printf

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.