问题标签 [strsep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
251 浏览

c - 带有多个分隔符的 Strsep:奇怪的结果

strsep与多个分隔符一起使用时,我目前有一些奇怪的结果。我的分隔符包括 TAB 字符、空格字符以及>and <

这个输出是我所期望的。

但是,只要我为分隔符添加 '<' 字符,我就会得到

不知何故,第一个字符被切断了。发生这种情况是否有原因?

谢谢你。

0 投票
1 回答
46 浏览

c - 使用 strsep 读取 csv 文件的分段错误

我目前正在尝试使用 strsep 读取 csv 文件,但它从未通过第一行

这个程序的输出是

它打印第一行,但不打印其余部分。

谢谢!

0 投票
3 回答
59 浏览

c - 在 for 循环中的 strsep() 之后调用 printf() 会导致段错误

我正在用 C 语言编写自己的 UNIX shell,并尝试添加对在引号内传递多字参数的支持(即echo "This is a test")。在您可以在下面看到的当前函数 ( parseCommandWords) 中,我成功地分离了通过输入参数传递给函数的单词,并通过strsep(). 但是,一旦printf()调用运行并打印出正确的wordand值input,就会引发分段错误。它永远不会到达 printf 下面的任何 if 语句,在它下面添加任何东西,根本不会运行。我没有看到是什么导致了这个问题。input = ls使用例如(简单命令)对其进行测试,它word = ls | input = (null)会按您的预期打印。

parsedWords参数最初是一个 NULL 字符串数组,并且参数在传递给函数之前也经过验证。

更新 #1:问题几乎肯定与strcpy(parsedWords[i],word). 将其更改为parsedWords[i] = word不会导致段错误,但当然,一旦我们退出函数,它就会失去其价值。当它通知我非法读/写时,我能够使用 Valgrind 查明这一点。

更新 2:我认为问题在于我argsparseInput. 用 NULL 初始化每个 char* 然后尝试使用 strcpy 在该位置写入应该是导致问题的原因,对吗?像这样动态地为每个字符串分配内存可以解决问题:

完整代码:

这是最小的可重现示例:

头文件:

0 投票
2 回答
74 浏览

c - 使用 strsep 的分段错误

我正在尝试使用strsep删除 CSV 文件中的多余字符。问题是当我运行它时,它给了我分段错误,我不知道为什么。这是代码:

使用gdb调试代码,它说它发生在行中if(strlen(p) == 0 { 所以它甚至没有进入switch case。我不知道为什么会这样。

谢谢