"В программе на Си, как взять (массив символов), т.е. строку ввода пользователя (включая пробелы), длина которой также должна быть значением ввода пользователя? - PullRequest
0 голосов
/ 24 января 2019

"В программе на Си, как взять (массив символов), то есть строку ввода пользователя (включая пробелы), длина которой также должна быть значением ввода пользователя?"

В программе на Си я пытался принять значение пользовательского ввода в качестве длины для строки пользовательского ввода, но не получил требуемого вывода. фрагмент кода программы

Я ожидаю, что вывод будет той же самой строкой, введенной пользователем, длина которой также будет значением ввода пользователя. Но фактический вывод не показывает строку, как только пользователь вводит длину строки.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Если длина неизвестна до времени выполнения (т. Е. Потому что она задана пользовательским вводом), динамическое выделение является опцией:

char *input = malloc(len + 1);
fgets(input, len + 1, stdin);

// use `input`...

free(input);
input = NULL;

Также, никогда не используйте gets; это опасно и не поддерживается новейшим стандартом C.

0 голосов
/ 24 января 2019

вам нужно очистить буфер stdin после вашего

scanf("%d",&len);
//add to clear the buffer manually after your scanf
int c;
while((c = getchar()) != '\n' && c != EOF);
char str[len+1];
fgets(str, len + 1, stdin);

плюс плохая привычка помещать подобный код на картинке вместо того, чтобы его публиковать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...