我有这个项目,我需要使用有人调用时传递的参数 程序。条件是令牌定界符是' " '我不能这样做。 我试过strcpy但是所有的' " '简直就是消失了。现在我正在尝试使用memcpy但是当我打印令牌时我会得到这个奇怪的字符。(请注意,我不需要打印它们,我只是想知道我手中是否有正确的东西所以我可以做那些信息。
int main(int argc, char** argv){
const char symb = (char)2;
char *comm;
char* offset = comm;
int i;
//put all args together
for(i = 1; i< argc; i++){
memcpy(offset, argv[i], strlen(argv[i]));
offset+=strlen(argv[i]);
}
char *token;
token = strtok(comm, &symb);
while(token != NULL){
printf("\n%s\n", token);//debugging
//do stuff with args
token = strtok(NULL, &symb);
}
return 0;
}
我知道argv将所有字符串分隔为&#34; &#34;,但我认为它应该保持&#39; &#34; &#39;太。我很抱歉,如果这太混乱了,但我试图具体。我将恢复它:
当有人写道:
$./prog op "tup1" "tup2 is the best" "tup3"
我想和&#34; tup1&#34; &#34; tup2是最好的&#34;和&#34; tup3&#34; 所以我需要在argv将它分开之后将它们全部放在一起然后通过&#39;&#34;&#39;&#39;分隔符。但是当我用printf调试时,我得到了这个:
$n�Y
$n@
$n �k
$n�Y
$n�Y
$n�Y
$nY
$n l
$Segmentation fault (core dumped)
我做错了什么?
cumps, gNp93