Funzione per capovolgere una stringa

di Anonimizzato28411 il
30 risposte
Ciao mi potete dare una mano con questo esercizio:
si scriva una funzione reverse(s) che capovolga la stringa s. La si usi poi per scrivere un programma che capovolga, una per volta, le righe del testo in ingresso.
Sono riuscito solo a fare la prima parte (si scriva una funzione reverse(s) che capovolga la stringa s), potete darmi qualche consiglio per la seconda parte ?

#include <stdio.h>
#include <string.h>

void reverse(char s[]);

void main()
{
	int c;
	//char s[10];
	while ((c = getchar()) != EOF && c != '\n')
		reverse(c);
}

void reverse(char s[])
{
	int i;
	for (i = strlen(s) - 1; i >= 0; --i)
		printf("%c", s[i]);
	
}

30 Risposte

  • A te compila quel codice?
  • SuperManPC ha scritto:


    Ciao mi potete dare una mano con questo esercizio:
    Ma chiedi aiuto per ogni esercizio del libro? Non ne conlcudi uno da solo?

    Lo scopo degli esercizi è quello di farli da soli. Se li proponi TUTTI nel forum allora stai usando il forum come il tuo tutor personale.
  • No così è compilabile, l' avevo fatto solo per dare l' idea di quello che volevo fare
    
    #include <stdio.h>
    #include <string.h>
    
    void reverse(char s[]);
    
    void main()
    {
    	reverse("stringa");
    }
    
    void reverse(char s[])
    {
    	int i;
    	for (i = strlen(s) - 1; i >= 0; --i)
    		printf("%c", s[i]);
    	
    }
    
  • Ma fammi capire, questo è un altro codice rispetto a quello del primo post.

    Che si deve fare?
  • oregon ha scritto:


    SuperManPC ha scritto:


    Ciao mi potete dare una mano con questo esercizio:
    Ma chiedi aiuto per ogni esercizio del libro? Non ne conlcudi uno da solo?

    Lo scopo degli esercizi è quello di farli da soli. Se li proponi TUTTI nel forum allora stai usando il forum come il tuo tutor personale.
    Qualcuno da solo l 'ho concluso ma questo non riesco
  • oregon ha scritto:


    Ma fammi capire, questo è un altro codice rispetto a quello del primo post.

    Che si deve fare?
    Bisogna usare quella funzione per capovolgere ogni riga del testo in ingresso, nel primo codice ho messo un ciclo while ma non so come farlo funzionare quindi ho tolto quella parte per rendere compilabile il codice.
  • Sì ma non dare risposte senza senso.

    Ti hanno chiesto se il primo codice che hai postato è compilabile. Rispondi su quello.
  • Ti faccio però notare che in tal modo stai solo stampando la stringa al contrario senza modificarla fisicamente, ma se per "capovolgere" intendi questo allora va bene.

    Inoltre potresti fare un esempio del "testo in ingresso"?
  • Nippolo ha scritto:


    A te compila quel codice?
    Si scusa è compilabile ma poi non funziona...
  • Nippolo ha scritto:


    Ti faccio però notare che in tal modo stai solo stampando la stringa al contrario senza modificarla fisicamente, ma se per "capovolgere" intendi questo allora va bene.

    Inoltre potresti fare un esempio del "testo in ingresso"?
    Si certo, dovrebbe essere:
    
    int c;
    while (c = getchar()) != EOF)
    
  • SuperManPC ha scritto:


    Nippolo ha scritto:


    A te compila quel codice?
    Si scusa è compilabile ma poi non funziona...
    No che non compila ... passi un char al posto di un vettore di char e quindi il compilatore ti DEVE dare un errore
  • SuperManPC ha scritto:


    Si certo, dovrebbe essere:
    
    int c;
    while (c = getchar()) != EOF)
    
    Con questo codice non inserisci un testo. NON hai un vettore di char in cui inserisci tutti i caratteri che ottieni da tastiera.
  • oregon ha scritto:


    SuperManPC ha scritto:


    Si certo, dovrebbe essere:
    
    int c;
    while (c = getchar()) != EOF)
    
    Con questo codice non inserisci un testo. NON hai un vettore di char in cui inserisci tutti i caratteri che ottieni da tastiera.
    Allora così ?
    
    char v[10];
    int i;
    for (i = 0; i < 10; i++)
         v[i] = getchar();
    
  • Così però obblighi a scrivere 10 caratteri. E se finisco prima?
Devi accedere o registrarti per scrivere nel forum
30 risposte