gcc problem?

Peter Stibrany cipso na ganga.gjh.schools.sk
Středa Prosinec 3 16:42:58 CET 1997



On Wed, 3 Dec 1997, Jaroslav Honsa wrote:

> Preju dobry vecer,
> 
> prosim Vas, kdo se v tom vyznate, nenechte me si porad lamat hlavu. Mam
> takovyto programek:
> 
> #include <stdio.h>
> #include <string.h>
> 
> main(void)
> {
>   char *p_c; 
>   char s1[] =  "a b,c,aa-bb-cc"; /*  char *s1 = */
>    p_c = strtok(s1, " ,-");     
>    if (p_c != NULL)
>      printf("%s \n", p_c);  
> 
>    while ((p_c = strtok(NULL, " ,-")) != NULL)
>      printf("%s \n", p_c); 
> }
> Takto funguje, ale kdyz nahradim s1[] pointerem *s1, tak to sice prelozi,
> ale pak "Segmentation fault (core dumped)". Proc to neni ekvivalentni? U
> Boralndu BC4.5 funguji obe verze. Zkousel jsem gcc v Linuxu, Solarisu i v
> SunOS a vsude to pada. Diky za radu, pokud vite.
> 
> Zdravi Jaroslav Honsa.
> 
Myslim, ze chyba bude v tom, ze funkcia strtok meni svoj prvy argument
(podla manualovej stranky). Kedze mate definovany pointer na char (cize
string), ktory gcc uklada ako konstantny retazec do pamati, ktory sa neda
zmenit, pri zavolani funkcie strtok, ktora sa o to pokusi vam program
padne.

					-Cipso




Další informace o konferenci Linux