Вы объявляете переменную char *sentences;
и сразу пытаетесь записать в нее значение scanf
?Это не сработает.
Если указатель char *
не указывает на существующую строку или на память, выделенную с помощью функций malloc
-семейства, присваивание ей с помощью scanf
или подобного является неопределенным поведением:
char *sentences;
scanf("%s", sentences); // sentences is a dangling pointer - UB
Поскольку вы на самом деле не поделились своим кодом, который использует scanf
и не работает, я могу только предположить, что это проблема.
Если вы хотите назначить пользователя-внесенное значение в строку, что вы можете сделать, это объявить его как массив фиксированной длины, а затем прочитать его с помощью подходящей функции ввода.scanf
будет работать, если используется правильно, но fgets
проще:
char sentence[200];
fgets(sentence, 200, stdin);
// (User inputs "We test coders. Give us a try")
printf("%s", sentence);
// Output: We test coders. Give us a try.
Кроме того, никогда, никогда не используйте gets
.