나는 scanf에서 정규 표현식을 사용하여 최대 n 자 문자열을 읽고 새 줄 문자까지 다른 것을 버리려고했습니다. 모든 공백은 일반 문자로 처리되어야하므로 읽을 문자열에 포함됩니다. 정규식에 관한 Wikipedia 기사를 읽었지만 scanf가 제대로 작동하지 않습니다. 여기에 내가 시도한 몇 가지 코드 :정규 표현식으로 scanf 사용
scanf("[ ]*%ns[ ]*[\n]", string);
[] 실제 공백 문자에 갈 예정이다, *는 하나 또는 그 이상을 의미하는데, n은 문자의 수를 읽는 것입니다 및 문자열에 대한 포인터이다 malloc으로 할당된다. 여러 가지 조합을 시도했습니다. 그러나 나는 문장의 첫 단어 만 읽는 경향이있다 (공백 문자에서 멈춘다). 게다가 *는 "0 이상"을 의미하는 대신 문자를 버리는 것 같습니다 ...
정규 표현식이 scanf에 의해 어떻게 해석되는지 자세히 설명 할 수 있습니까? 게다가 getc를 반복적으로 사용하는 것이 효율적입니까? 사전에
감사합니다 : D
'fgets()'시도 :'fgets (string, sizeof string, stdin); ' – pmg
남은 문자가 입력 스트림에 남게되는 문제는 그렇지 않습니까? – someone
공간이 충분한 경우'fgets()'는'\ n '까지 모든 것을 소비합니다. – pmg