我想disect以下字符串:子,並打印出來
char msg[30] ="Hello 13 1";
char *psh;
int num1;
int num2;
char s[30],s[30];
我嘗試這一點,但:
pch = strtok (msg," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
}
,輸出:
Hello
13
1
我只是想讓數字'13'等於num1,數字'1'等於num2:
printf("%d\n",num1);
Output: 13
printf("%d\n",num2);
Output: 1
我嘗試:
sscanf(sc, "%s %d %d", &s, &num1, &num2);
,其輸出:
Segmentation fault
感謝
[編輯]
char * pch
char s[30];
char sc[30];
char num1[30];
char num2[30];
pch = strtok (s," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
}
sscanf(sc, "%s %d %d", pch, &num1, &num2);
不要對字符串使用address-of運算符('&'),它們已經是指針(或者在數組情況下會衰減指針)。 – 2014-10-30 11:43:32
如果您以前從未嘗試過使用調試器,那麼現在是完美的時機。如果您在調試器中運行程序,它將停在崩潰位置。然後可以查看函數調用堆棧,甚至可以遍歷調用堆棧,以便最終獲得代碼(如果您不在那裏),然後檢查變量的值。至少,請使用調試信息(將'-g'標誌添加到'gcc')並在調試器中運行並編輯問題以包含'bt'調試器命令的輸出(它顯示函數調用堆棧,又名回溯)。 – 2014-10-30 11:46:10