Где я ошибаюсь и почему?Какая ошибка с fgets в этом коде?
#include<stdio.h>
#include<string.h>
int main()
{
char *str;
int length, i, j, flag = 0;
printf("\n\nEnter string: ");
fgets(str, 20, stdin);
printf("You entered: %s", str);
return 0;
}
Там проблема с линией fgets(str, 20, stdin);
линии. Я не могу разобраться. После ввода строки компилятор просто перестает работать, и я получаю сообщение об ошибке: Эта программа перестала работать. Не могли бы вы указать, где я ошибаюсь, а также обходной путь для этой проблемы? Стандартная библиотека определяет fgets
как:
char * fgets (char * str, int num, FILE * stream);
Я использую Sublime Text 2 и GCC на MinGW оболочки.
Другой вопрос, основанный на концепции указателя: Существуют ли различия между char * str
, char* str
и char *str
?
Также можно использовать память _global_ как в 'static char str [20]'. Как правило, это по праву недооценивается, но в отдельных случаях это жизнеспособный вариант. – chux
@ ash9209, приведение возвращаемого значения 'malloc' помогает следующему программисту, который читает ваш код. Когда включен 'stdlib.h', нет никакого технического недостатка для явного литья 'malloc'. – JackCColeman