문자열을 저장하기 위해 char 포인터로 scanf를 사용하려고합니다. ENTER 키 스트로크의 경우, 나는 그것을 붙잡고 싶다. 내가는 fgets를 사용할 수 있습니다 알고 있지만 나는 다음과 같은 코드를 작성하는 관리 그래서 가능하다면 알고 궁금 :scanf가 정규식 및 동적 할당에서 작동하지 않는 이유
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *string = NULL;
printf("Type anything : ");
scanf("%*[^\n]%10[^\n]ms", string);
printf("Your input : %s\n", string);
free(string);
return EXIT_SUCCESS;
}
을하지만 잘 작동하는 것 같다하지 않습니다. 출력은 다음과 같습니다.
문자열을 올바르게 표시하려면 어떻게해야합니까?
1) Tehere 더 정규식없는
m
형식 지정자를 지원한다고 가정 코드에서 . 'scanf'는 그들을 지원하지 않습니다. 2) C에서 메모리 할당이 어떻게 작동하는지 배우십시오. 코드에 큰 오해가 있습니다. 3) 당신의 코드는 _undefined behaviour_를 호출합니다. (그것에 대한 serach!) – Olaf'scanf ("% * [^ \ n] % 10 [^ \ n] ms", 문자열);'->'scanf ("% m [ \ n] % * c ", & string);'와 glibc. – BLUEPIXY
@BLUEPIXY 무슨 뜻인지 자세히 설명해 주시겠습니까? – Kusalananda