Совместное использование scanf и fgets
Требовалось считать целое число, а затем строку. Написал такой код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int str_len; // Длина строки
scanf("%i", &str_len);
char* str;
fgets(str, str_len, stdin);
return 0;
}
После ввода строки >>4 red
получил ошибку:
timeout: the monitored command dumped core
./Playground/runner.sh: line 88: 12 Segmentation fault timeout "$runtime" "$output" - < "/usercode/inputFile"
str_len, stdin);
В чем дело?
Ответы (1 шт):
Автор решения: Joker
→ Ссылка
Строка fgets(str, str_len, stdin); получает на вход пустой указатель, а не указатель на буфер.
Должно быть так:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int str_len; // Длина строки
scanf("%i", &str_len);
char* str = malloc(str_len);
fgets(str, str_len, stdin);
return 0;
}