Tag: strtok

C中的strtok函数如何工作?

我找到了这个解释strtok函数的示例程序: #include #include int main () { char str[] =”- This, a sample string.”; char * pch; printf (“Splitting string \”%s\” into tokens:\n”,str); pch = strtok (str,” ,.-“); while (pch != NULL) { printf (“%s\n”,pch); pch = strtok (NULL, ” ,.-“); } return 0; } 但是,我不知道这是如何工作的。 怎么可能pch = strtok (NULL, ” ,.-“); 返回一个新令牌。 我的意思是,我们用NULL调用strtok 。 […]

将字符串拆分为标记并将其保存在数组中

如何将字符串拆分为一个标记,然后将它们保存在一个数组中? 具体来说,我有一个字符串”abc/qwe/jkh” 。 我想分开”/” ,然后将令牌保存到数组中。 输出将是这样的 array[0] = “abc” array[1] = “qwe” array[2] = “jkh” 请帮我

stGok_r为MinGW

strtok_r是strtok的可重入变体。 符合POSIX标准。 但是,MinGW缺少它,我正在尝试编译正在使用它的程序。 有没有什么办法可以添加这个函数的标准实现,可能是项目自己的代码,还是MinGW的标准库函数?

如何使用strtok()

我正在编写一个C程序来研究strtok()用法的用法。 这是我的代码: #include #include main() { char abc[100] = “ls &”; char * tok; tok = strtok(abc, ” “); while(tok!=NULL) { printf(“%s”, tok); tok = strtok(NULL, ” “); } printf(“\n\n\n\n\n%s”, tok); return 0; } 它打印以下输出: ls& (null) 但我希望它在第二个printf声明中打印’&’。 我该怎么做? 我需要这部分作为我的作业项目。 谁能帮我吗? 先感谢您! 🙂

C:从分隔的源字符串创建字符串数组

将分隔的字符串转换为C(而不是C ++)中的字符串数组的有效方法是什么? 例如,我可能有: char *input = “valgrind –leak-check=yes –track-origins=yes ./a.out” 源字符串将始终只有一个空格作为分隔符。 我想要一个malloc的malloc’ed字符串char *myarray[]数组,这样: myarray[0]==”valgrind” myarray[1]==”–leak-check=yes” … 编辑我必须假设inputString中有任意数量的标记,所以我不能将它限制为10或其他东西。 我尝试过strtok和我已经实现的链表的混乱解决方案,但是valgrind抱怨太多以至于我放弃了。 (如果你想知道,这是我正在尝试编写的基本Unix shell。)

strtok不接受:char * str

当使用char * str作为第一个参数(而不是分隔符字符串)时,strtok将无法正常工作。 它是否与以该表示法分配字符串的区域有关? (据我所知,这是一个只读区域)。 提前致谢 例: //char* str =”- This, a sample string.”; // <—doesn't work char str[] ="- This, a sample string."; // <—works char delims[] = " "; char * pch; printf ("Splitting string \"%s\" into tokens:\n",str); pch = strtok (str,delims); while (pch != NULL) { printf ("%s\n",pch); pch = strtok (NULL, […]

strtok是否与字符串一起使用(作为分隔符)?

例如: 友好。 我不喜欢这个词末尾的“ly”。 我可以用“ly”标记这个字符串吗? someCharVariable = strtok(“友好”,“ly”)?

strtok坏了吗? 或者只是棘手?

strtok无可救药地被打破了吗? 在关于C语言解析的许多StackOverflow问题中,有人会建议使用strtok ,并且一个常见的答案是不应该使用strtok ,它是绝对无法破解的。 一些海报声称strtok的问题仅限于multithreading问题,并且在单线程环境中是安全的。 什么是正确的答案? 它有用吗? 它无可救药地被打破了吗? 你能举例说明你的答案吗?

为什么strtok会改变这样的输入?

好的,所以我理解strtok会修改它的输入参数,但在这种情况下,它会将输入字符串折叠成只有第一个标记。 为什么会发生这种情况,我该怎么做才能解决这个问题? (请注意,我不是在讨论变量“temp”,它应该是第一个标记,而是变量“input”,在一次调用strtok后变为“this”) #include #include #include int main(int argc, char* argv[]) { char input[]=”this is a test of the tokenizor seven”; char * temp; temp=strtok(input,” “); printf(“input: %s\n”, input); //input is now just “this” }

strtok导致段错误,但不是在单步执行代码时

我是C的新手,我正在尝试将日期/时间字符串拆分为单独的变量。 但是,当我逐行逐步执行gdb中的代码时,它可以工作,但是,当我让它正常运行而没有断点时,它会出错并且我看不清楚原因。 以下是代码: char * dateTimeString = “2011/04/16 00:00”; char dateVar[11]; char timeVar[6]; if (splitTimeAndDateString(dateVar, timeVar, dateTimeString)) { exit(1); } printf(“Date: %s\tTime: %s\n”, dateVar, timeVar); 以下是function int splitTimeAndDateString(char date[11], char time[6], char * dateString) { char *token; token = strtok(dateString, ” “); int i = 0; while (token != NULL) { if (i == 0) […]