Aiuto con questo esercizio!! come riscrivo la funzione con l'aritmetica dei puntatori?
Riscrivere la seguente funzione usando l’aritmetica sui puntatori invece dell’indicizzazione
dell’array (eliminare le variabili i,j,k e tutti gli usi dell’operatore []). Sapreste indicare cosa fa
la funzione e cosa viene stampato se viene eseguito il main seguente?
#include <stdio.h>
int f(char s[], char t[]) {
int i,j,k;
for(i=0; s[i]!=’\0’; i++) {
for(j=i,k=0; t[k] != ’\0’ && s[j]==t[k]; j++,k++)
;
if(k>0 && t[k] == ’\0’)
return i;
}
return -1;
}
int main(void) {
char a[]="maritare";
char b[]="arit";
char c[]="arito";
char d[]="ugo";
char e[]="tare";
printf("Valore della chiamata: %d\n", f(a,b));
printf("Valore della chiamata: %d\n", f(a,c));
printf("Valore della chiamata: %d\n", f(a,d));
printf("Valore della chiamata: %d\n", f(a,e));
return 0;
}
avevo pensato così ma non mi trovo:
int f(char *s, char *t) {
int i,j,k;
char *p=s;
for (; *s!='\0';s++)
{
for(*p=*s; *t!='\0' && *p==*t; *t++)
;
if(*t == '\0')
return *(s++);
}
return -1;
}