Я использую меньший фрагмент кода для проверки функциональности более крупной (для начинающих) программы, но я не понимаю разницы между двумя строками.
Я нашел и использовал:
#include <stdio.h>
#include <string.h>
int main()
{
char *string, *found;
string = strdup ("1/2/3");
printf("Orig: '%s'\n",string);
while ((found = strsep(&string,"/")) != NULL )
printf ("%s\n",found);
return (0);
}
и это печатает токены по одному.
Затем, когда я пытаюсь перейти к введенной пользователем строке:
#include <stdio.h>
#include <string.h>
int main()
{
char string[13],
char *found, *cp = string;
fprintf(stderr, "\nEnter string: ");
scanf("%12s",string);
printf("Original string: '%s'\n",string);
while((found = strsep(&cp,"/,-")) != NULL )
printf("%s\n",found);
return(0);
}
Я получаю ошибку seg. Я понимаю основы указателей, массивов и строк, но явно что-то упускаю, и мне бы хотелось, чтобы кто-нибудь сказал мне, что это такое!
Кроме того, если я изменю printf("%s\n",found);
на printf("%i\n",found);
, я верну несколько нежелательных целых чисел, но всегда правильную сумму, например. Если я ввожу 1/2/3
, я получаю три строки целых чисел, 1111/2222
я получаю две строки.
Спасибо!
-Edit- Возникла дополнительная проблема с strsep
, подробно описанная здесь. Спасибо всем.
string
! 20.03.2018cp
объявлено какchar *
, это должно работать. В вашем примере в настоящее время он имеет значениеchar
. 20.03.2018*
. Для ясности я думаю, что начну новый вопрос, касающийся этой другой проблемы, и оставлю это для исходной ошибки. 21.03.2018