나는 어디서 잘못 가고 왜?이 코드에서 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);
인 문제가 있습니다. 나는 그것을 이해할 수 없다. 문자열을 입력 한 후 컴파일러가 작동을 멈추고 다음과 같은 오류 메시지가 나타납니다. 이 프로그램의 작동이 중지되었습니다. 내가 잘못 가고있는 곳과이 문제의 해결 방법을 지적 해 주시겠습니까?
char * fgets (char * str, int num, FILE * stream);
내가을 쉘는 MinGW에 숭고한 텍스트 2 및 GCC를 사용하고 있습니다 : 표준 라이브러리는 fgets
과 같이 정의한다.
포인터의 개념을 기반으로 다른 질문 : 이 char * str
, char* str
및 char *str
사이에 어떤 차이가 있습니까?
'static char str [20]'에서와 같이 _global_ memory를 사용할 수도 있습니다. 전형적으로 이것은 정당하게 싫은 일이지만 일부 경우에는 실행 가능한 옵션입니다. – chux
@ ash9209,'malloc'의 반환 값을 캐스팅하면 코드를 읽는 다음 프로그래머가 도움이됩니다. 'stdlib.h'가 포함되어 있다면'malloc'을 명시 적으로 캐스팅하는 기술적 인 단점은 없습니다. – JackCColeman