main에서 작업 할 때 fseek
과 ftell
이 있으면 알고 싶습니다.주에서 fseek와 ftell에 해당하는 것
예를 들어, 물어볼 때 파일의 이름을 입력하면 끝에서 Enter 키를 누릅니다. 다음으로 사용자에게 다른 파일 이름을 물어 보지만, 읽지 않은 버퍼에 '\n'
이 있습니다. 프로그램에서 '\n'
을 읽으므로 사용자는 두 번째 파일의 이름을 입력 할 수 없습니다. 그래서 나는 한 포지션을 버퍼에서 앞으로 움직이고 싶다. 일반적으로 파일에서 내가 할 것입니다 :
fseek(file, ftell + 1, SEEK_SET);
내가 메인에있을 때와 같은 일을하고 싶습니다. 파일로 작업하지 않습니다.
당신이 콘솔 /'stdin'에서 입력을 읽는 의미합니까? 그렇다면 입력 스트림을 플러시 *해야합니다. 포인터에 대한 [이 게시물] (http://stackoverflow.com/questions/2187474/i-am-not-able-to-flush-stdin)을 참조하십시오 –
* * 파일을 사용하고 있습니다. 작업하고있는 파일은'stdin' 일뿐입니다. 예를 들어,'getc (stdin)'과 getchar()'은 정확히 동일합니다; 'stdin'은 암묵적인 매개 변수로 생각할 수 있습니다. –
* 정확히 어떻게이 파일 이름을 읽고 있습니까? 'fgets()'를 사용하면, ti는'\ n'을 소비합니다. 'scanf ("% s", ...)'를 사용하면, 그 이름을 저장 한 배열이 오버플로되는 것을 피할 수 없습니다. 우리에게 [작은 완성 된 프로그램] (http://sscce.org/)을 보여주고, 우리가 당신을 도울 수 있도록 도울 수 있습니다. 그것이 그대로, 당신은 *'fseek'가 올바른 해결책이라고 가정합니다. 거의 확실하게 [XY 문제] (http://meta.stackexchange.com/q/66377/167210)가 있습니다. –