簡體   English   中英

無法在C中將字符串拆分為數組

[英]Trouble splitting string into array in C

我想將一個char字符串拆分為一個數組temp_dow。

//parse incoming string
char input[] = {"1111111,0000000,1010101"};
char temp_dow[3][7];
char *tok1;
int i = 0;
tok1 = strtok(input, ",");
while (tok1 != NULL) {
    char temp[7];
    strcpy(temp, tok1);
    strcpy(temp_dow[i],temp);
    tok1 = strtok(NULL, ",");
    printf ("<<<<<<<< %s\n",temp_dow[i]);
    i++;
}
printf ("******* %s\n",temp_dow[0]);
printf ("******* %s\n",temp_dow[1]);
printf ("******* %s\n",temp_dow[2]);

輸出不匹配。 while循環之外的temp_dow []是完全錯誤的。 它顯示的是指針的值而不是實際值?

這是輸出。

  <<<<<<<< 1111111
  <<<<<<<< 0000000
  <<<<<<<< 1010101
  ******* 1010101
  ******* 
  ******* 

謝謝

strtok文檔指定:

令牌的此結尾將自動替換為空字符,並且該令牌的開頭由函數返回。

您的每個令牌都是7位數字,並且您要為每個令牌分配7個字符。 但是,這不考慮空字符終止符。 您實際上需要8個字符的空間。

您應該將temp_dow聲明更改為:

char temp_dow[3][8];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM