PDA

View Full Version : [C] Aiutatemi se no impazzisco: strcat


figulus
30-10-2007, 11:56
Perché non funziona????

typedef char * word;

int main(void){

word w1 = (word)calloc(1000, sizeof(char));
w1="pluto";
word w2 = (word)calloc(1000, sizeof(char));
w2="pippo";

strcat(w1,w2);

system("PAUSE");
return 0;
}

Mi va in segmentation fault la chiamata a strcat....:muro: :muro: :muro:

Ziosilvio
30-10-2007, 12:11
Perché non funziona????

typedef char * word;

int main(void){

word w1 = (word)calloc(1000, sizeof(char));
w1="pluto";
strcpy(w1,"pluto");
word w2 = (word)calloc(1000, sizeof(char));
w2="pippo";
strcpy(w2,"pippo");
strcat(w1,w2);

system("PAUSE");
return 0;
}

Mi va in segmentation fault la chiamata a strcat....:muro: :muro: :muro:
Perché, come fai tu, prima fai puntare w1 a una regione di memoria allocata, ma poi la fai puntare a un'altra zona, che ha sei caratteri di cui il sesto nullo, e poi non si sa.

figulus
30-10-2007, 12:14
Grazie mille. Queste sono le cose che mi fanno perdere in un bicchier d'acqua...

ndakota
30-10-2007, 13:33
ne approfitto, quando si ha segmentation fault? in che casi? grazie.

figulus
30-10-2007, 18:04
In generale quando si cerca di accedere ad uno spazio di memoria non allocato, ma lascio la parola agli esperti.

marko.fatto
30-10-2007, 18:19
Quando si tenta di accedere a una zona di memoria non accessibile o si cerca di scrivere in una zona di sola lettura...

trallallero
31-10-2007, 07:42
ne approfitto, quando si ha segmentation fault? in che casi? grazie.

basta un semplice
printf("%s", 1);

71104
31-10-2007, 12:02
In generale quando si cerca di accedere ad uno spazio di memoria non allocato, ma lascio la parola agli esperti. non potevi dirlo meglio. ci sono sedicenti esperti* che avrebbero imbastito tutt'altre bestialità, tipo che il processo tenta di scrivere ad un indirizzo di memoria che appartiene ad un altro processo e cose simili :D

* ad es. l'esercitatore di Programmazione 1 che avevo al primo anno :asd: