strtok()与C中的char ** argv

时间:2014-11-02 18:26:55

标签: c strtok

我有这个项目,我需要使用有人调用时传递的参数 程序。条件是令牌定界符是' " '我不能这样做。 我试过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

0 个答案:

没有答案