首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Clang和MinGW获取错误"undefined reference to 'strsep'“

使用Clang和MinGW获取错误"undefined reference to 'strsep'“
EN

Stack Overflow用户
提问于 2019-10-05 07:57:54
回答 2查看 2.1K关注 0票数 1

相关代码如下:

代码语言:javascript
复制
#define _GNU_SOURCE
#define BUFFER_SIZE 1024

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    while (1) {
        char* buffer;
        size_t size = 32;
        size_t line;
        line = getline(&buffer,&size,stdin);
        printf("%s\n",buffer);

        int commandList[line];
        int count = 0;
        while (strsep(buffer," ")) {
            commandList[count] = strsep(buffer," ");
            count++;
        }
    }
}

我在minGW和Clang中使用代码块。

我知道我的一些代码目前没有完成它应该做的事情,但我非常确定它至少应该被编译。我还收到一个警告:“函数‘strsep’的隐式声明”。

EN

回答 2

Stack Overflow用户

发布于 2019-10-05 08:40:40

strsep对于您自己实现来说是微不足道的

代码语言:javascript
复制
#include <string.h>

char *strsep(char **stringp, const char *delim) {
    char *rv = *stringp;
    if (rv) {
        *stringp += strcspn(*stringp, delim);
        if (**stringp)
            *(*stringp)++ = '\0';
        else
            *stringp = 0; }
    return rv;
}
票数 3
EN

Stack Overflow用户

发布于 2019-10-05 07:58:59

源文件应包含string.h.h:

代码语言:javascript
复制
 #include <string.h>

不确定这是否会修复链接错误(未定义的引用),但它可能会。

根据我的Linux手册,它可能需要:

代码语言:javascript
复制
 #define _DEFAULT_SOURCE
    (...)
 #include <string.h>

代码语言:javascript
复制
 #define _BSD_SOURCE
    (...)
 #include <string.h>

如果所有其他方法都失败了,那么使用string.h中的strtok(),它在很多方面都更优越。Strtok()不会修改第一个参数;适用于const字符串;并且不会覆盖分隔符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58244300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档