Я хочу 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
благодаря
[EDIT]
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);
Не используйте адрес-оператор ('&') для строк, они уже являются указателями (или распадаются на указатели в случае массивов). –
И если вы никогда не пытались использовать отладчик раньше, теперь самое подходящее время. Если вы запустите свою программу в отладчике, она остановится в месте аварии. Затем вы можете посмотреть на стек вызовов функций и даже подойти к стеку вызовов, чтобы вы оказались в своем коде (если вас там нет), а затем просмотрите значения переменных. По крайней мере, пожалуйста, создайте с помощью отладочной информации (добавьте флаг '-g' в' gcc') и запустите в отладчике и отредактируйте вопрос, чтобы включить вывод команды 'bt' debugger (которая показывает стек вызовов функций , aka back-trace). –