首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strsep()不像预期的那样工作

strsep()不像预期的那样工作
EN

Stack Overflow用户
提问于 2014-12-02 18:29:41
回答 1查看 547关注 0票数 1

strsep没有正确地解析我的字符串。我使用" "作为分隔符,它在单词中间解析字符串。我搞不懂为什么。

代码:

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


#define BUFFERSIZE 128
#define BLANK_STR " "

static char *inputs[BUFFERSIZE];

void prepare_inputs(char *input){
    int i = 0;
    char *token;

    while ((token = strsep(&input,BLANK_STR)) != NULL) {
        printf("token: %s\n", token);
        if (inputs[i] == NULL)
            inputs[i] = calloc(strlen(token) + 1, sizeof(char));
        else {
            memset(inputs[i], 0, strlen(inputs[i]));
        }
        strncat(inputs[i], token, strlen(token));
        printf("inputs[i]: %s\n", inputs[i]);
        i++;
    }
}


int main(void) {
    char *input = calloc(BUFFERSIZE, sizeof(char));

    while(1) {
        fgets(input, sizeof(input), stdin);
        prepare_inputs(input);
    }
}

输入:

代码语言:javascript
复制
hi hii hiii hiiii

输出:

代码语言:javascript
复制
token: hi
inputs[i]: hi
token: hii
inputs[i]: hii
token:
inputs[i]:
token: hiii
inputs[i]: hiii
token: hi
inputs[i]: hi
token: iii

inputs[i]: iii
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-22 00:55:05

sizeof不给您动态分配内存块的大小。它给出了指针的大小。

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

https://stackoverflow.com/questions/27256444

复制
相关文章

相似问题

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