假设我有以下功能:
void readcmd(char* cmd, char* params) {
char* input;
size_t size = 0;
char* sep = "\t\v\r\f\n\b "; // separator
getline(&input, &size, stdin);
cmd = strtok(input, sep);
}
我的意见是:
我喜欢Stackoverflow!
在上面的代码中,我已将程序存储在 cmd 数组中的第一个令牌中。我希望句子的其余部分存储在params数组中;因此:
cmd:我
params:就像Stackoverflow一样!
我怎样才能做到这一点?
谢谢
答案 0 :(得分:0)
处理完评论后,更完整的例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void readcmd(char** cmd, char** params) {
char* input = 0;
size_t size = 0;
char* sep = "\t\v\r\f\n\b "; // separator
if (getline(&input, &size, stdin) < 0) {
printf("failed to read a line\n");
exit(-1);
}
*cmd = strtok(input, sep);
if (*cmd) {
*cmd = strdup(*cmd);
*params = strdup(input + strlen(input) + 1);
}
free(input);
}
int main(int argc, char** argv) {
char *cmd = 0;
char *params = 0;
readcmd(&cmd, ¶ms);
if (cmd) {
printf("cmd: %s\n", cmd);
free(cmd);
}
if (params) {
printf("params: %s\n", params);
free(params);
}
return 0;
}