salve a tutti,
stavo considerando il seguente listato:
il quale mi genera a video il seguente outpus:
Domande:
- seguendo l'ordine delle istruzioni nella funzione main mi sarei aspettato che la prima cosa che il programma avrebbe fatto, sarebbe quello di stamparmi il valore di str e solo sucessivamente eseguire la funzione strlen ;
- chi mi spiega la logica dell'espressione (q-p-1) che usa la sottrazione di puntatori?
grazie
stavo considerando il seguente listato:
C:
#include <stdio.h>
char str[] = "BATUFFO";
int strlen(char *); //Prototipo della funzione.
main()
{
printf(" srt=%s \n", str);
printf("la stringa %s è lunga %d\n", str, strlen( str ));
}
int strlen( char *p )
{
printf( " p e: %c \n", *p );
char *q = p;
printf( "dopo = q e: %c \n", *q );
printf( "dopo = p e: %c \n", *p );
while ( *q++);
printf( "il valore di q e: %c \n", *q );
printf( "il valore di p e: %c\n", *p );
return (q-p-1);
}
p e: .
dopo = q e: .
dopo = p e: .
il valore di q e:
il valore di p e: .
p e: C
dopo = q e: C
dopo = p e: C
il valore di q e:
il valore di p e: C
srt=BATUFFO
p e: B
dopo = q e: B
dopo = p e: B
il valore di q e:
il valore di p e: B
la stringa BATUFFO Þ lunga 7
Domande:
- seguendo l'ordine delle istruzioni nella funzione main mi sarei aspettato che la prima cosa che il programma avrebbe fatto, sarebbe quello di stamparmi il valore di str e solo sucessivamente eseguire la funzione strlen ;
- chi mi spiega la logica dell'espressione (q-p-1) che usa la sottrazione di puntatori?
grazie