[Lugge] 2° esercizio C

  • From: Massimo Arnaudo <marnaudo@xxxxxxxxx>
  • To: LugGE <lugge@xxxxxxxxxxxx>
  • Date: Wed, 18 Jul 2001 16:00:48 +0200

Ciao a tutti,
ho un problema su un esercizio di programmazione in C.

L' esercizio mi chiede di creare un funzione 'reverse[s]', che inverta la
stringa di caratteri di input.

La funzione l' ho scritta ma non sono in grado di dire se assolve al
compito, poichè in main le righe che ho modificato per lo scopo hanno un
errore che non riesco a capire e quindi rimuovere.

Avete dei suggerimenti?
Grazie

Massimo
-- 
E impari che puoi davvero sopportare,
che sei davvero forte,
e che vali davvero.
---             ---
HomePage:       http://spazioweb.inwind.it/arnaudo
LinuxGroup:     http://lugge.ziobudda.net


-- Attached file included as plaintext by Listar --

#include <stdio.h>
#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);
char reverse( char s[], int maxline);

/* stampa la linea di input più lunga */
main()
{
        int len;                /* lunghezza della linea corrente */
        int max;                /* massima lunghezza trovata sinora */
        char line[MAXLINE];     /* linea di input corrente */
        char longest[MAXLINE];  /* linea più lunga salvata quì */
        char invertita[MAXLINE];        

        max = 0;
        while ((len = getline(line, MAXLINE)) > 0)
                if (len > max)
                {
                        max = len;

                        copy (reverse(longest,len), line);              
                }
        if (max > 0)            /* c' era almeno una linea di input */
                printf("%s \n", invertita);
        return 0;
}

/* getline: legge e carica in 's' una linea, ritorna la lunghezza */
int getline(char s[], int lim)
{
        int c, i;
        
        for (i = 0;i<lim-1 && (c = getchar()) !=EOF && c !='\n'; ++i)
                s[i] = c;
        if (c == '\n')
        {
                s[i] = c;
                ++i;
        }
        s[i] = '\0';
        return i;
}

/* copy: copia 'from' in 'to'; assume che 'to' sia sufficentemente ampio */
void copy(char to[], char from[])

{
        int i,a;
        a = 0;

        
        for (i= 0 ; from[i] !='\0'; ++i)        /* controlla che il carattere
non corrisponda a <ctrl d> */
                {
                if (from[i] == ' ')             /* carattere di spazio*/
                ;
                else if (from[i] == '\t')       /* carattere di tabulazione */
                ;
                else    {
                        to[a] = from[i];        
                        ++a;
                        }
                        
                        
                } 
}

/* inverti l' ordine dei caratteri della stirnga */
char reverse( char s[], int n)
{
        char input[n];
        int s1, n1;
        n1 = n;

        for (s1 = 0; s1 < n ; ++s1)
        {
                if (input[n1] == '\n')
                --n1;
                else 
                {
                        s[s1] = input[n1];
                        --n;
                }
        
        }
        return ;
}


<========----------
 Prima di scrivere in m-list per favore leggi il regolamento
 http://lugge.ziobudda.net/benvenuto.html



Other related posts: