2015-12-20 78 views
0

我在C代碼中使用了strsep(),但我得到了這個錯誤。C - strsep()函數與int錯誤,返回值是char *

enter image description here

void get_token() 
{ 
    char *token; 
    char *stringp; 
    int n = 1; 

    stringp = buf; 

    while(stringp != NULL) 
    { 
      token = strsep(&stringp, "\t\n"); 
      switch(n) { 
      case 1 : strcpy(label, token); 
      case 2 : strcpy(opcode, token); 
      case 3 : strcpy(operand, token); 
      } n++; 
    } 
} 

這是我的代碼,我使用strsep()這樣的。 我不知道int說的錯誤。 strsep()返回char *我認爲。

+0

你忘了'#include '也許? – Kalle

+0

buf is array(global) – Jung

+0

我已經添加string.h – Jung

回答

3

您正在使用的實現不會在<string.h>中聲明strsep()

後果是;

  1. 編譯器假定strsep()回報int(因此第一個警告)
  2. 鏈接(ld)沒有找到一個圖書館命名爲strsep()功能鏈接中包含的(因此誤差大約strsep()ld沒有解決)。

發生這種情況的原因是strsep()不是標準C庫的一部分。您需要獲取包含它的庫,或者「滾動您自己的」版本strsep()

+0

即使我聲明也行不通所以我做了strsep()函數。 – Jung

+1

注意:'strsep()'不是POSIX函數。它首先在BSD,AFAIK上提供,現在可以在其他一些平臺(如Linux)上使用。 –

+1

要使用GCC在Linux上通過'strings.h'使'strsep()'可用''define'' _BSD_SOURCE'。你可以參考這裏的Linux手冊頁:http://man7.org/linux/man-pages/man3/strsep.3.html – alk