Форум — Development strtok 0 0 Чет не могу разобратся как работает) компилится но при запуске проги пишет "Segmentation fault" ... помогите примерчиком? ps копмпилю на линуксе RH9 Ссылка
char *c; char *str, *str1, *str2, *str3; str = "str1;str2;str3"; c = strtok(str, ";"); strcpy(str1, c); c = strtok(NULL, ";"); strcpy(str2, c); c = strtok(NULL, ";"); strcpy(str3, c); UncleAndy ★★★ (08.08.03 08:42:30 MSK) Ссылка
Все равно выскакивает "Segmentation fault" пишу #include <string.h> int main (){ char *c; char *str, *str1, *str2; str = "str1/str2"; c = strtok(str, "/"); strcpy(str1, c); c = strtok(NULL, "/"); strcpy(str2, c); return 0; } компилю gcc -Wall test.c -o test что я делаю не так? anonymous (08.08.03 09:56:56 MSK) Ссылка
Почему то опять "Segmentation fault" =( пишу #include <string.h> int main(){ char *c; char *str, *str1, *str2; str = "str1/str2"; c = strtok(str, "/"); strcpy(str1, c); c = strtok(NULL, "/"); strcpy(str2, c); return 0; } а компилю так gcc -Wall test.c -o test что деалю не так? anonymous (08.08.03 10:12:07 MSK) Ссылка
ребят вы вообще в курсе что есть такие вещи как память, сегменты в которые можно писать или которые только для чтения и подобную лабуду? lg ★★ (08.08.03 11:05:21 MSK) Ссылка
man strtok на предмет These functions modify their first argument. These functions cannot be used on constant strings. затем осознаем что str - стековый литерал и изменять его нельзя. abbr ★ (08.08.03 11:18:49 MSK) Ссылка
ну вы народ вообще писец) пример то не можете написать то?) я си не особо знаю) ща сходил и купил умнцю книжку там написан примаер, цытирую: #include <stdio.h> #include <string.h> int main(void) { char *p; p=strtok("Травка зеленеет, солнышко блестит"," "); printf(p); do { p=strtok(NULL," "); if(p) printf("|%s",p); }while(p); return 0; } чтот тоже не рботает)) напишите плиз рабочий пример? anonymous (08.08.03 12:09:38 MSK) Ссылка
мож ест ьдругой способ разбить строку по некому разделителю?)) просто надо строку вида "text1/text2" разделить и получить значения) anonymous (08.08.03 12:15:05 MSK) Ссылка
int main() { char *c; char str[]="str1/str2", *str1, *str2; str1 = strtok(str, "/"); str2 = strtok(NULL, "/"); printf("str1 = %s, str2 = %s\n", str1, str2); return 0; } lg ★★ (08.08.03 12:35:49 MSK) Ссылка
int main (){ char *c; char *str, str1[128], str2[128]; str = "str1/str2"; c = strtok(str, "/"); strcpy(str1, c); c = strtok(NULL, "/"); strcpy(str2, c); return 0; } Как минимум - ты забыл память выделить для строковых переменных str1 и str2 и естественно что при попытке сделать в них strcpy выскакивает SegFault. UncleAndy ★★★ (08.08.03 13:23:38 MSK) Ссылка