Originariamente inviato da Scara95
Non prendere come oro colato quello che ti hanno detto, non è vero che devi sempre usare una funzione per manipolare le stringhe, devi solo considerare che sono dei puntatori ad aree di memoria e che il C non è provvisto di garbage collector.
Ciò significa che le funzioni ti facilitano la vita, ma volendo potresti fare tutto a mano gestendo la memoria e stando attento a come sposti i caratteri in memoria...
Sono d' accordo, e aggiungo che può servire il confronto tra due puntatori per vedere se puntano alla stessa area di memoria.
Gli string literals vengono messi nella stessa area di memoria:
codice:
int main(int argc, char** argv)
{
const char* ptr1="ciao";
const char* ptr2="ciao";
char *p1, *p2;
if(ptr1==ptr2)
printf("ok"); // stampa ok
p1=(char*)malloc(100*sizeof(char));
p2=(char*)malloc(100*sizeof(char));
strcpy(p1,"ciao");
strcpy(p2,"ciao");
if(p1==p2)
printf("ok"); // non stampa ok
free(p1);
p1=p2;
if(p1==p2)
printf("ok"); // stampa ok
return 0;
}