C 언어를 사용하여 데이터베이스 플랫 파일 프로젝트를 작성 중입니다. 나는 구성원이 거의없는 구조를 만들었습니다. 나는 데이터를 가져 오기 위해 fwrite()를 바이너리 파일과 fread()로 사용하고있다. 내 두 가지 주요 질문fread() 및 fwrite가 C 프로그래밍에서 작동하는 방법
첫째 우리는 텍스트 파일에 구조를 쓸 수 있습니까? 나는 좋은 모범을 보지 못했다. 텍스트 형식으로 작성하는 것이 실제로 잘못 되었습니까? "wb"대신 "w"를 사용하여 글을 쓸 때 텍스트 형식을 얻지 만 추가 단어가 있습니다.
두 번째 어떻게 fread() & fwrite가 작동하는지(). 그들은 데이터 블록에서 다음 블록의 주소를 얻는 방법을 조작합니다. 우리가 포인터를 가지고 있지만 파일에 나던 어떤 어드레스가 있어도 포인터가 다음 블록으로가는 방법은 무엇입니까?
아니요, 파일이 바이너리 모드로 열려 있지 않으면 이진 구조를 읽거나 쓸 수 없습니다. 분명히 파일 시스템이 작동하는 방법과 OS API가 파일 시스템에 액세스하는 방법에 대한 연구를해야합니다. 이는 실제 파일 액세스를 위해 OS에 위임 한'fread()'/'fwrite()'구현의 범위를 벗어납니다. –
입력에 대한 감사합니다 :) fgets/fputs를 사용해야합니까? 텍스트 형식으로 쓰려면 – ekaf
데이터에 무작위로 접근하려면'fread/fwrite'를 구현하십시오 (그러나 구조체에 포인터가 포함되어 있으면 잘못 될 것입니다). 'fprintf/fgets'와'sscanf'를 사용하여 전체 데이터 세트를 읽고, 처리하고, 파일을 다시 쓰려면 텍스트가 좋습니다. 바이너리 레코드로 저장된 데이터는 종종 이식 가능하지 않으며, 프로그램이 중단되면 파일 된 데이터는 쓸모가 없다. 텍스트 파일은 사람이 읽을 수있는 반면, 다른 프로그램에 데이터를 읽는 새로운 기능을 작성하는 것이 훨씬 쉽습니다. 나는 클라이언트가 데이터 파일이 CSV 형식의 스프레드 시트와 호환되어야한다고 주장한 프로젝트에서도 작업했습니다. –