Problemi sui caratteri in C

di il
19 risposte

Problemi sui caratteri in C

Il testo è: Si scriva un programma i cui dati in uscita replichino i dati in ingresso, sostituendo i caratteri di tabulazione con \t, ogni backspace con \b e ogni barra inversa con \\, cosi da rendere perfettamente visibili le tabulazioni e le cancellazioni.

19 Risposte

  • Re: Problemi sui caratteri in C

    Ho provato a farlo, secondo voi intende questo il testo:
    
    #include <stdio.h>
    main()
    {
        char c;
        
        while ((c = getchar()) != EOF)
        {
            if (c == '\t')  printf("\t");
            else if (c == '\b') printf("\b");
            else if (c == '/') printf("\\");
            else putchar(c);
        }
    }
    
  • Re: Problemi sui caratteri in C

    Se devi visualizzare il \t devi usare \\t nella printf
  • Re: Problemi sui caratteri in C

    Ok grazie e \t è risolto ma \b non riesco proprio
  • Re: Problemi sui caratteri in C

    \b non riesco a visualizzarlo
  • Re: Problemi sui caratteri in C

    Questo perché la funzione getchar è buffered. Devi utilizzare

    #include <conio.h>

    e la funzione

    _getch()
  • Re: Problemi sui caratteri in C

    _getch() al posto di getchar()?
  • Re: Problemi sui caratteri in C

    Penso tu ci possa arrivare da solo
  • Re: Problemi sui caratteri in C

    Be allora non va lo stesso…
  • Re: Problemi sui caratteri in C

    
    #include <stdio.h>
    #include <conio.h>
    main()
    {
        char c;
        
        while ((c = _getch()) != EOF)
        {
            if (c == '\t') printf("\\t");
            else if (c == '\b') printf("\\b");
            else putchar(c);
        }
    }
    
    Cosi?
  • Re: Problemi sui caratteri in C

    Quest' ultimo codice va ma non replica i dati, aapena clicco su tab scrive \t e quando clicco su backspace scrive \b
  • Re: Problemi sui caratteri in C

    La _getch non visualizza i dati come la getchar. A visualizzarli sei tu con le printf e la putchar
  • Re: Problemi sui caratteri in C

    Quindi dato il testo del problema in alto questa soluzione secondo te va bene:
    
    #include <stdio.h>
    #include <conio.h>
    main()
    {
        int c;
        
        while ((c = _getch()) != EOF)
        {
            if (c == '\t') printf("\\t");
            else if (c == '\b') printf("\\b");
            else putchar(c);
        }
    }
    
  • Re: Problemi sui caratteri in C

    Sì, anche se il testo non indica esattamente se i caratteri eventualmente cancellati devono essere visualizzati o no
  • Re: Problemi sui caratteri in C

    Riesce qualcuno a mettere alla prova questo programma per il conteggio delle parole? Quale tipo di dati in ingresso ha più probabilità di individuare eventuali bachi?
    
    #include <stdio.h>
    
    #define IN 1
    #define OUT 0
    //Conta il numero di righe, parole e caratteri in un testo
    main()
    {
    	int c, nl, nw, nc, state;
    
    	state = OUT;   //stato=esterno alla parola
    	nl = nw = nc = 0;
    	while ((c = getchar()) != EOF) {
    		++nc;//conta il carattere
    		if (c == '\n')//se c è 1 carattere new line
    			++nl;//conta nuova riga
    		if (c == ' ' || c == '\n' || c == '\t')//se (c=spazio o c=newline o c=tabulazione)
    			state = OUT;//allora stato=esterno alla parola
    		else if (state == OUT) {//altrimenti se (stato=esterno alla parola)
    			state = IN;//allora stato=interno alla parola
    			++nw;//conta nuova parola
    		}printf("Righe:%d Parole:%d Caratteri:%d\n", nl, nw, nc);
    	}
    	
    }
    
Devi accedere o registrarti per scrivere nel forum
19 risposte