Risolto Dubbi su strcpy aiutoo

vuelva

Utente Iron
8 Settembre 2021
8
6
0
11
#include <stdio.h>
#include <string.h>
int main() {
char str_a[20]; // a 20 element character array
char *pointer; // a pointer, meant for a character array
char *pointer2; // and yet another one
strcpy(str_a, "Hello World\n");
pointer = str_a; // set the first pointer to the start of the array
printf(pointer);
pointer2 = pointer + 2; // set the second one 2 bytes further in
printf(pointer2); // print it
strcpy(pointer2, "y you guys!\n"); // copy into that spot
printf(pointer); // print again
}

Questo è il mio software ma non riesco a capire come alla fine il risultato di pointer sarà uguale a "Hey you guys!"
potete aiutarmi?
 
Ciao!
Consiglio per ottenere risposte piu' facilmente: inserisci il codice nel tag [ CODE] (trovi il simbolo ' </> ' quando scrivi la discussione! Cosi' il codice sara' ben formattato e leggibile!
 
  • Mi piace
Reazioni: St3ve
Sei in queste condizioni:
Codice:
   0   1   2   3   4   5   6   7   8   9  10   11   12   13   14       19          
[ 'H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd' '\n' '\0' '\0' '\0' ... '\0' ]  str_a
   ^       ^                                                                       
   |       |                                                                       
  ptr     ptr2

Poi esegui:
C:
strcpy(ptr2, "y you guys!\n");
quindi copi "y you guys!\n" a partire dalla posizione indicata da ptr2. Ti ritrovi in queste condizioni:
Codice:
   0   1   2   3   4   5   6   7   8   9  10  11  12   13   14       19          
[ 'H' 'e' 'y' ' ' 'y' 'o' 'u' ' ' 'g' 'u' 'y' 's' '!' '\n' '\0' ... '\0' ]  str_a
   ^       ^                                                                     
   |       |                                                                     
  ptr     ptr2

Se fai una stampa a partire da ptr2 ottieni "y you guys!\n" e se fai una stampa a partire da ptr ottieni "Hey you guys!\n".

Se non fosse già abbastanza chiaro, spiega meglio il tuo dubbio.
 
  • Mi piace
Reazioni: vuelva
Sei in queste condizioni:
Codice:
   0   1   2   3   4   5   6   7   8   9  10   11   12   13   14       19          
[ 'H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd' '\n' '\0' '\0' '\0' ... '\0' ]  str_a
   ^       ^                                                                       
   |       |                                                                       
  ptr     ptr2

Poi esegui:
C:
strcpy(ptr2, "y you guys!\n");
quindi copi "y you guys!\n" a partire dalla posizione indicata da ptr2. Ti ritrovi in queste condizioni:
Codice:
   0   1   2   3   4   5   6   7   8   9  10  11  12   13   14       19          
[ 'H' 'e' 'y' ' ' 'y' 'o' 'u' ' ' 'g' 'u' 'y' 's' '!' '\n' '\0' ... '\0' ]  str_a
   ^       ^                                                                     
   |       |                                                                     
  ptr     ptr2

Se fai una stampa a partire da ptr2 ottieni "y you guys!\n" e se fai una stampa a partire da ptr ottieni "Hey you guys!\n".

Se non fosse già abbastanza chiaro, spiega meglio il tuo dubbio.


Grazie mille veramente, spiegazione chiarissima