- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试编写一系列将文件名作为输入(例如 main.c)并使用 strsep() 返回文件扩展名的函数。当我运行该程序时,每当调用 strsep 函数时都会出现总线错误。这是代码:
static char *get_extn(char **filename)
{
char *delim = ".";
strsep(filename, delim);
return *filename;
}
void format(char *filename)
{
char *extn = malloc(256 * sizeof(char));
strncpy(extn, get_extn(&filename), 256);
printf("extn: %s\n", extn);
}
这个程序的主要功能只是用一个包含文件名的 char* 调用 format():
int main(int argc, char *argv[])
{
char *filename = "test.c";
format(filename);
return 0;
}
我不确定为什么这个程序在执行时会导致总线错误。预先感谢您提供的任何帮助。
编辑:添加主要功能代码
最佳答案
不保证字符串文字的内存是可写的。
做
char filename[] = "test.c";
创建一个可写的字符数组。
在我的系统上,此内存被保护为只读,并且试图违反此保护会产生段错误。
此外,get_ext 可以简单地是:
return strsep(filename, ".");
和 sizeof(char)
被定义为 1(即 1 个字节——即使该字节不是 8 位大(罕见))。
关于c - 使用 strsep() 的总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392042/
#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;
我是一名优秀的程序员,十分优秀!