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

    [c] leggere da tastiera interi usando la read

    ragazzi dovrrei leggere degli interi (composti da una sola cifra) da tastiera con la read...


    il fatto è che se faccio cosi:

    codice:
    int i;
    read(0,i,1);
    non mi fuzniona...

    visual studio 2010 dice:


    Run-Time Check Failure #3 - The variable 'i' is being used without being initialized.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quella 'i' cosa indica? Il compilatore vuole che tu la inizializzi...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Originariamente inviato da Alex'87
    Quella 'i' cosa indica? Il compilatore vuole che tu la inizializzi...
    ninete una semplice variabile che dovrebbe essere valorizzata con la read

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa xnavigator ... ma il secondo parametro della read di che tipo dovrebbe essere ?

    E soprattutto ... come funziona la read ?

    Leggilo da un manuale ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Scusa xnavigator ... ma il secondo parametro della read di che tipo dovrebbe essere ?

    E soprattutto ... come funziona la read ?

    Leggilo da un manuale ...
    letto deve essere un puntatore.

    Però c'è ancora qualceh problemino:

    codice:
    	char buf;
    	printf("Inserisci il primo intero\n");
    
    	read(0,&buf,1);
    	printf("Intero: %c\n",buf);
    
    	printf("Inserisci il secondo intero\n");
    	fflush(NULL);
    
    	read(0,&buf,1);
    	printf("Intero: %c\n",buf);
    molto semplicemente la prima read funziona.. Inserisco "1" e alla printf mi stampa correttamente Intero: 1.

    Il problema è che non mi fa inserire il secondo intero, praticmaetne mi salta la seconda read e termina direttametne.

    HO provato a mettere fflush ma non cambia nulla...

    vado a leggere nel manuale.. anceh se non capisco perchè se la prima read funziona la seconda non dovrebbe funzionare ugualmetne =/

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da xnavigator
    letto deve essere un puntatore.
    Ecco ... ciò dimostra che si risparmiano un po' di problemi studiando prima l'argomento ...

    Però ...
    codice:
    	char buf;
    	printf("Inserisci il primo intero\n");
    
    	read(0,&buf,1);
    	printf("Intero: %c\n",buf);
    
                 while(getchar() != '\n') ;
    
    	printf("Inserisci il secondo intero\n");
    
    	read(0,&buf,1);
    	printf("Intero: %c\n",buf);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    grazie mille (dannato buffer )


    ho provato a recuperare i valori interi usando atoi... in questo modo:

    codice:
    	char buf,buf2;
    	int sum;
    	printf("Inserisci il primo intero\n");
    	read(0,&buf,1);
    	while(getchar() != '\n') {}
    
    	printf("Inserisci il secondo intero\n");
    	read(0,&buf2,1);
    
    	printf("primo valore: %d, secondo valore: %d\n",atoi(&buf),atoi(&buf2));
    il secondo valore è sballato

    output:
    Inserisci il primo intero
    1
    Inserisci il secondo intero
    2
    primo valore: 1, secondo valore: 21
    output2
    Inserisci il primo intero
    3
    Inserisci il secondo intero
    7
    primo valore: 3, secondo valore: 73
    e come se mi accodasse al secodno intero anche il primo (7+3)

  8. #8
    Dato che devi semplicemente leggere degli interi, non ti conviene usare la scanf?

    codice:
    #include <stdlib.h>
    
    int main()
    {
    	int x;
    	int y;
    	printf(">> ");
    	scanf("%d", &x);
    	printf(">> ");
    	scanf("%d", &y);
    	printf("%d", x+y);
    }

  9. #9
    mi converrebbe molto.. ma devo fare un esercizio...

    dopo devo anceh stampare a video la somma dei due interi con la write.............

    ma lol... ho provato a farlo eseguire su windows e mi da tutto il contrario

    Inserisci il primo intero
    1
    Inserisci il secondo intero
    2
    primo valore: 12, secondo valore: 2

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non puoi usare la atoi perchè non hai a disposizione delle stringhe terminate da null ma dei semplici char.

    Dato che si tratta di semplici char, puoi usare l'operatore bitwise and

    printf("primo valore: %d, secondo valore: %d\n", (buf & 0xF), (buf2 & 0xF));
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.