strsep()无法正常工作
问题描述:
strsep
未正确解析我的字符串。我使用" "
作为分隔符,它在字中间解析字符串。我无法弄清楚为什么。strsep()无法正常工作
代码:
#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);
}
}
输入:
hi hii hiii hiiii
输出:
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
答
sizeof
不给你一个动态分配的内存块的大小。它给你指针的大小。
'sizeof'不会给你一个动态分配内存块的大小。它给你指针的大小。 – 2014-12-02 18:32:32
谢谢!我简直不敢相信! – bmpasini 2014-12-02 18:45:41
@DarkFalcon:您应该将其作为答案发布。 – 2014-12-02 19:34:07