关于使用strtok的一个小问题
生活随笔
收集整理的這篇文章主要介紹了
关于使用strtok的一个小问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在弄一下啊小小程序的時候。報錯,出現了問題。先看代碼
int main(int argc, char* argv[])
{char *filename = "interface_ipset_1_1.json";char* split1 = "_";char* split2 = ".";char splitfile1[4][NAME_MAX];sagent_string_split(filename,split1,splitfile1,4);printf("1 = %s.",splitfile1[0]);reuturn 0;}int32_t sagent_string_split(char * str, const char * split,char split_str[][NAME_MAX], int32_t max_num)
{if (st== NULL || split == NULL || split_str == NULL || max_num <= 0){printf("sagent_string_split params have error!\n");}char* result = NULL;char* endstr = NULL;result = strtok_r(str, split,&endstr);int32_t i = 0;while (result ){if (i >= max_num){printf("split num is more than max_num = %d.", max_num);return -1;}printf("i = %d,result = %s",i,result);strncpy(split_str[i++], result, NAME_MAX - 1);result = strtok(NULL, split);}return 0;
}int main(int argc, char* argv[])
{char *filename = "interface_ipset_1_1.json";char* split1 = "_";char* split2 = ".";char splitfile1[4][NAME_MAX];sagent_string_split(filename,split1,splitfile1,4);printf("1 = %s.",splitfile1[0]);reuturn 0;
}在運行這個程序的時候。報錯,Segmentation fault 這個錯誤。哪踩內存了呢。原來char *filename = "interface_ipset_1_1.json"; 這樣聲明是 一個常量,不可更改的,而strtok在使用過程中會把它進行改動,造成了錯誤。所以須要注意。
能夠這樣聲明char filename[64] =?"interface_ipset_1_1.json"
轉載于:https://www.cnblogs.com/jzssuanfa/p/7026213.html
總結
以上是生活随笔為你收集整理的关于使用strtok的一个小问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陈妍希qq是多少要真的?
- 下一篇: 求充个蓝宝石