Volevo trasferire elementi da una stringa a un'altra stringa, quindi ho scritto il seguente programma. Inizialmente, pensavo che il ciclo for dovrebbe essere eseguito fino a quando il carattere NULL (incluso quello che è stato) è stato copiato. Ma in questo codice, il ciclo for termina se è stato trovato un carattere NULL (cioè non ancora copiato), ma è ancora in grado di visualizzare la stringa in cui sono stati copiati gli elementi. Com'è possibile, se non c'è un carattere NULL in primo luogo?Copia di elementi da un array di caratteri a un altro
#include<stdio.h>
#include<stdlib.h>
int main()
{
char temp[100], str[100];
fgets(str, 100, stdin);
int i;
for(i = 0; str[i]!='\0'; i++)
{
temp[i] = str[i];
}
puts(temp);
return 0;
}
'NULL' è una macro con una costante del puntatore _null_. Questo è irrilevante qui. Intendi il carattere ASCII 'NUL' o' nul' con il valore intero '0'. – Olaf
Ulteriori informazioni su 'strcpy'. –
@Pete Becker Penso che questo sia MOLTO probabile che sia qualcosa di simile a un problema di compiti a casa/tutorial (* cioè * destinato/progettato per rendere ** un ** consapevole dei problemi con le stringhe di copia). Dire semplicemente a qualcuno di leggere di 'strcpy' non aiuta a realizzare quella comprensione. – Tersosauros