Stringhe in C

di il
39 risposte

Stringhe in C

L' esercizio chiede di scrivere un programma i cui dati di uscita replicano i dati in ingresso, sostituendo però una stringa di uno o più spazi con uno spazio singolo.
La prima parte sono riuscito a farla mentre la seconda che riguarda gli spazi no.
Codice:#include <stdio.h>

main()
{
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
}
Questo copia solo una stringa, qualcuno riesce ad aiutarmi per completare il programma che deve fare anche questo: sostituendo però una stringa di uno o più spazi con uno spazio singolo.

39 Risposte

  • Re: Stringhe in C

    Innanzitutto è int main() e non main().

    Secondo, non stai copiando alcuna stringa ma solo leggendo i caratteri e riscrivendoli su schermo fino a fine del file. Il punto è, che vuol dire che deve avere solo uno spazio?
    Cioè "Ciao come stai?" deve diventare "Ciao comestai?"?

    E infine esiste un tag CODE per il codice…
  • Re: Stringhe in C

    Grazie, per quanto riguarda main sul mio libro ansi c c'è main() non int main()…
    Per gli spazi se c'è ad esempio' Come stai?' deve diventare 'Come stai?' .
  • Re: Stringhe in C

    Io ho capito che intende trasformare: "come (qua tanti spazi tipo 3) stai?" in "come (qua un singolo spazio) stai?"
  • Re: Stringhe in C

    Basta che usi una variabile che poni a 1 all'inizio.
    Durante l'input con una if accetti lo spazio solo se la variabile è a 0, altrimenti non lo visualizzi. Se lo accetti poni la variabile a 1 e la rimetti a 0 se arriva un carattere diverso da spazio.
  • Re: Stringhe in C

    Int b = 1;
    if(b == 0) {putchar(c);b=1;}
    else if(c != " ") b == 0;
    tipo cosi?
  • Re: Stringhe in C

    #include <stdio.h>

    main()
    {
    int c;
    int b;
    b = 1;
    while ((c = getchar()) != EOF) {
    if (b == 0) putchar(c);
    else if (c != " ") b = 0;
    }
    }
    Cosi mi trasforma "come (2 spazi) stai?" a "ome (2 spazi) stai?"
  • Re: Stringhe in C

    Rileggi e ritenta. E usa i tag CODE o il codice non si capisce.
  • Re: Stringhe in C

    Come si usa i ltag CODE e dov'è?
  • Re: Stringhe in C

    Si legge il regolamento prima di partecipare ad un forum.

    Usa l'Editor completo e usa il tasto </> selezionando il codice
  • Re: Stringhe in C

    Solo per farti riflettere ...
    
    	int c;
    	int b = 1;
    	while ((c = getchar()) != EOF)
    	{
    		if (b == 0)
    		{
    			putchar(c);
    			if (c == ' ') b = 1;
    		}
    		else
    		{
    			if (c != ' ')
    			{
    				putchar(c);
    				b = 0;
    			}
    		}
    	
    
  • Re: Stringhe in C

    #include <stdio.h>
    
    main()
    {
    int c;
    int b;
    b = 1;
    while ((c = getchar()) != EOF) {
    if (b == 0) putchar(c);
    else if (c != " ") b = 0;
    }
    }
    Ora si riesce a leggere?
  • Re: Stringhe in C

    La variabile b serve a determinare se un carattere va tenuto o scartato. Se ricevi un carattere, e questi è tra quelli da scartare, controlli b e se vale 0 significa che quel carattere è il primo, quindi lo devi mandare in uscita e contemporaneamente setti b a 1.
    Al carattere successivo, controlli di nuovo se è da scartare. Se NON lo è, setti b a 0 e mandi il carattere in uscita. Se invece è da scartare, controlli se b vale 1, nel qual caso scarti il carattere (e lasci b a 1).
  • Re: Stringhe in C

    SuperManPC ha scritto:


    #include <stdio.h>
    
    main()
    {
    int c;
    int b;
    b = 1;
    while ((c = getchar()) != EOF) {
    if (b == 0) putchar(c);
    else if (c != " ") b = 0;
    }
    }
    Ora si riesce a leggere?
    No...
    Ma dico, a scuola le basi della programmazione non ve le insegna nessuno ?
    Il motivo per cui il codice deve essere messo dentro i Tag code e' perche' dovrebbe essere identato in maniera corretta.
    Secondo te che differenza c'e' tra quello che hai scritto prima e quello che hai scritto ora nel Tag code ?
    Ti sembra che il codice sia identato correttamente ?

    Le basi servono, caspiterina... le basi...
  • Re: Stringhe in C

    Non credo che a scuola insegnino a scrivere in 1 forum con il tag code, lasciami il tempo di imparare invece che fare critiche inutili
Devi accedere o registrarti per scrivere nel forum
39 risposte