Aritmetica dei puntatori

di il
5 risposte

Aritmetica dei puntatori

Salve a tutti, ho questo esercizio e mi viene chiesto di stabilire quale sia l'output e di eliminare tutti gli usi dell'operatore di indicizzazione [], e la variabile i nella funzione f

#include <stdio.h>

int f (char s[], char t[], int n);

int main(void)
{
   char s[] = "123";
   char t[] = "12345";
   int b=11;

   printf ("%d\n", f(s,t,b));

 return 0;
}

int f (char s[], char t[], int n) 
{
   int i;

   for (i=0; s[i] == t[i]; i++)
	if (s[i]=='\0'|| --n <=0) return 0;

 return i;
}
l'output è 3, in quanto la funzione verifica quanti elementi delle due stringhe sono uguali ed incrementa i. Facendolo con l'aritmetica dei puntatori ho fatto cosi però non ho idea di come eliminare la variabile i, come posso fare? grazie

#include <stdio.h>

int f (char s[], char t[], int n);

int main(void)
{
   char s[] = "123";
   char t[] = "12345";
   int b=11;

   printf ("%d\n", f(s,t,b));

 return 0;
}

int f (char s[], char t[], int n) 
{
   int i=0;

   for (; *s == *t; s++, t++)
   {
	i++;
	if (*s=='\0'|| --n <=0) return 0;
   }

 return i;
}

5 Risposte

  • Re: Aritmetica dei puntatori

    Ma se non devi usare [[ perché qui

    int f (char s[], char t[], int n)

    ci sono ancora?
  • Re: Aritmetica dei puntatori

    Comunque ... devi restituire la differenza tra il puntatore s e il puntatore iniziale che memorizzerai nella funzione in un'altra variabile puntatore all'inizio.
  • Re: Aritmetica dei puntatori

    Ciao oregon, non li ho levati solo perchè potevo usare direttamente i puntatori nel corpo della funzione per far prima . Non capisco come fare a restituire la differenza, devo prendere *s="3" e un puntatore *p che punta all'ultimo elemento di t e faccio la differenza?
  • Re: Aritmetica dei puntatori

    No ... Ti ho scritto in modo preciso ...

    nella funzione dichiara un altro puntatore (lo chiami sini)
    assegna a tale puntatore il valore di s
    nella return restituisci il valore di s - sini
  • Re: Aritmetica dei puntatori

    Grazie mille, funziona a perfezione
Devi accedere o registrarti per scrivere nel forum
5 risposte