- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 strsep() 解析文本字符串 (char *),问题是分隔符必须按顺序使用,例如:第一个标记为 ',',第二个标记为 ':'。 .
sep = " ,:-,.!.";
tofree = string;
while (token = strsep(&string, " ,:-,.!."))
{
validate(token);
}
free(tofree);
strsep() 用字符串中的任何 sep 字符分隔。读完 strsep() 和 strtok_r() 后,仍然一无所获。有没有办法在 while 循环中做到这一点?任何想法都会有帮助。谢谢
最佳答案
您可以使用 strtok()
在循环中使用分隔符数组。
strsep()
和 strtok_r()
不是 ISO/IEC C11 Standard定义的函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int separate(const char *data, const char **delims) {
char *dat = malloc(strlen(data) + 1);
char *p;
size_t delimindex = 0;
if (!dat) return 1;
strcpy(dat, data);
p = strtok(dat, delims[delimindex++]);
while (delims[delimindex] && p) {
printf("%s\n", p);
p = strtok(NULL, delims[delimindex++]);
}
free(dat);
return 0;
}
int main(void) {
const char *delims[] = {" ", ",", ":", "-", ",", ".", "!", ".", NULL};
const char *test1 = "aaa bbb,ccc:ddd-eee,fff.ggg!hhh.iii";
const char *test2 = "foobar";
separate(test1, delims);
separate(test2, delims);
return 0;
}
关于c - 按一定顺序使用带有分隔符的 strsep() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310356/
#include #include #include int main() { char *buf = "2012/9/8"; char sep[] = "/"; char *tok
我正在尝试使用 strsep() 解析文本字符串 (char *),问题是分隔符必须按顺序使用,例如:第一个标记为 ',',第二个标记为 ':'。 . sep = " ,:-,.!."; tofree
我用 C 语言为 simpleShell 程序创建了一个 parseCmd 方法,并将每个参数存储在分隔符空格之前,以存储在我的 args[] 数组中。但是,我试图将参数及其各自的参数添加到链接列表中
strsep 没有正确解析我的字符串。我用""作为分隔符,解析的是单词中间的字符串。我不明白为什么。 代码: #include #include #include #include #defi
#include #include int main() { char *slogan = "together{kaliya} [namak]"; char *slow_gun = strdup(
使用函数 strsep 查找字符串的第一个单词似乎存在指针兼容性问题。到目前为止,我一直认为 char *s 和 char s[] 是完全可以互换的。但似乎他们不是。我在堆栈上使用数组的程序失败并显示
我写了这个函数: char** parse_parameters(const char* input_string, int num_params, char** params) { char
我正在尝试编写一系列将文件名作为输入(例如 main.c)并使用 strsep() 返回文件扩展名的函数。当我运行该程序时,每当调用 strsep 函数时都会出现总线错误。这是代码: static c
当我使用 strsep() 遍历字符串的标记时,存储指向这些标记的指针并在以后引用它们是否安全?示例: char str[] = "some word tokens"; char *sameStr =
运行下面的代码时出现段错误。 它基本上应该读取一个超过 3M 行的 .csv 文件,然后再做其他事情(与问题无关),但在 207746 次迭代后它返回一个段错误。如果我删除 p = strsep(&l
我正在创建一个程序,启动时会使用 scanf 输入命令和一些参数,并使用这些参数调用 execvp。我正在使用 strsep 执行此操作。我将字符串存储在一个数组 (char*) 中,然后我想将其拆分
使用 strsep 拆分包含一堆无用垃圾的 CSV (","Delim)。其中一个条目两边都有引号(即 Florida,"Bob",1999),我想在将它们保存到数组中之前将其取出。 如何删除名称中的
我在用户空间中有一个程序写入内核模块中的 sysfs 文件。我已经隔离出崩溃的根源很可能是这个特定的函数,因为当我在到达这一点之前运行用户代码时它不会崩溃,但是当我添加写入代码时它很可能崩溃。我怀疑我
平台:Linux、OSX 编译器:GCC 我有一个简单的程序,目前让我感到困惑 - 我知道我正在弄乱几种不同类型的数组/指针来产生这个问题 - 它是故意的 - 我试图理解它。 列出的代码将按预期编译和
我正在使用一小段代码来测试较大(初学者)程序的功能,但我在显示从字符串中提取的 token 时遇到问题。 我发现并使用了: #include #include int main() { char
同时使用 getline 和 strsep 时发生内存泄漏。我知道 strsep 修改了 line - 这可能是原因吗?该 line 未正确释放。 FILE *file = fopen("keyw
int main(int argc, char *argv[]) { char *line, buffer[1024]; char *token, *setValue, *po
GCC 8.2.0 未检测到使用 -fsanitize=address 编译的以下代码中的泄漏: #include #include #include int main() {
尝试使用 strsep() 解析逗号分隔值文件时,我得到了一些不需要的输出。它似乎适用于文件的一半,其中一个数字只有一个值(即 0-9),但是一旦添加了多个值,例如 512, 它将打印 512 12
我有以下代码: #include int main(void) { char *buffer = NULL, **words = NULL, *aPtr = NULL, *sPtr;
我是一名优秀的程序员,十分优秀!