Salve a tutti ho questo esercizio e devo rifarlo con l'aritmetica dei puntatori
#include<stdio.h>
#include<string.h>
int f(char s[], char t[]){
int i,j;
int n=strlen(s)-1;
int m=strlen(t)-1;
if (n>m) return -1;
for (i=n, j=m; i>=0 && j>=0; i--,j--)
if ((s[i] != t[j])) return i+1;
return 0;
}
int main(void) {
char a[]="ore";
char b[]="colore";
char c[]="bianco";
char d[]="mare";
printf("Valore della chiamata: %d\n", f(a,a));
printf("Valore della chiamata: %d\n", f(a,b));
printf("Valore della chiamata: %d\n", f(b,a));
printf("Valore della chiamata: %d\n", f(a,c));
printf("Valore della chiamata: %d\n", f(a,d));
return 0;
}
io ho fatto cosi ma quando l'if non è verificato mi restituisce sempre 0, perchè?
int f(char *s, char *t){
char *s1;
s1=s;
s=='\0', t=='\0';
if (s>t) return -1;
for (*s='\0'-1, *t='\0'-1;*s && *t; s--,t--)
if ((*s != *t)) return s1-s;
return 0;
}