텍스트 파일의 확장: 프로그램에 속하는 정의의 유형 및 기본 측면. 텍스트 파일 확장자가 txt인 프로그램

텍스트 파일- 텍스트 데이터를 포함하는 컴퓨터 파일. 텍스트 파일은 텍스트로 해석되도록 설계되지 않은 데이터를 포함하는 바이너리(바이너리) 파일과 반대입니다(예: 텍스트를 인코딩 또는 압축된 형식으로 저장하거나 텍스트가 아닌 사운드, 이미지 또는 기타 데이터를 저장하는 파일) .

장점과 단점

장점:

  • 다양성 - 텍스트 파일은 모든 시스템이나 OS에서 읽을 수 있습니다. 특히 ASCII와 같은 단일 바이트 인코딩과 관련하여 다른 파일 형식에 공통적인 문제가 발생하지 않습니다. 다른 플랫폼에서 바이트 순서 또는 기계 길이 단어의 차이.
  • 안정성 - 이러한 파일의 모든 단어와 문자는 자급할 수 있으며 이러한 파일의 바이트 손상이 있는 경우 압축 또는 이진 파일에서 일반적으로 데이터를 복구하거나 나머지 콘텐츠를 계속 처리할 수 있습니다. 여러 바이트가 손상되면 파일을 완전히 복구할 수 없게 됩니다. 많은 버전 제어 시스템은 텍스트 파일용으로 설계되었으며 전체적으로 바이너리에서만 작동할 수 있습니다.
  • 체재 텍스트 파일매우 간단하며 거의 모든 OS와 함께 제공되는 프로그램인 텍스트 편집기로 변경할 수 있습니다.

단점:

  • 압축되지 않은 큰 텍스트 파일은 정보 엔트로피가 낮습니다. 이러한 파일은 필요한 최소 공간보다 더 많은 공간을 차지합니다. 이 중복성은 데이터 전송 채널 및 미디어(예: 자기 테이프)에서 데이터를 수신할 때 오류에 대한 복원력 증가를 결정하지만.
  • 일부 텍스트 파일 작업은 효과가 없습니다. 예를 들어 숫자가 파일에 나타나면 컴퓨터 시스템은 작업을 시작하기 전에 비교적 복잡한 숫자 변환 절차를 사용하여 내부 형식으로 변환해야 합니다. 1000번째 줄로 이동하려면 그 앞에 999줄을 세어야 합니다. 한 줄을 다른 줄로 바꾸는 등의 작업은 어렵습니다. 따라서 대용량 데이터 작업 시 텍스트 파일은 상호 운용성을 보장하는 중간 형식으로만 사용됩니다.

텍스트 파일 기반 형식

단순성 때문에 텍스트 파일은 종종 서비스 정보(예: 로그)를 저장하는 데 사용됩니다. 텍스트 파일의 끝에 새 데이터를 추가하는 작업은 기존 파일 크기 및 추가된 텍스트 데이터 유형, 텍스트 로그 파일 유지 관리는 일반적으로 사용자와 다른 응용 프로그램(디스크 공간이 고갈될 때까지)에 대해 효율적이고 눈에 띄지 않게 발생합니다.

텍스트 형식은 더 많은 특수 형식(예: .ini, SGML, HTML, XML, TeX, 프로그래밍 언어 소스 코드)의 기초 역할을 합니다. 이러한 형식 중 일부에서는 특정 문자 조합을 텍스트를 표시하는 수단으로 사용할 수 있습니다. 이 경우 파일은 서식 있는 텍스트를 저장할 수 있으며, 여기에는 글꼴, 스타일, 크기 등을 문자(예: Rich Text Format, HTML)에 대해 추가로 지정할 수 있습니다.

파일 이름 확장명

DOS 및 Windows는 일반적으로 일반 텍스트 파일에 .txt 확장자를 사용합니다. 그러나 다른 확장자가 있거나 없는 파일은 텍스트 파일이 될 수 있습니다. 예를 들어, 프로그램의 소스 코드는 일반적으로 프로그램이 작성된 프로그래밍 언어(.bas, .pas, .c)에 해당하는 확장자를 가진 파일에 저장됩니다.

형식이 지정된 텍스트(마크업이 있는 텍스트)는 일반적으로 형식 또는 마크업 언어(.rtf, .htm, .html)에 해당하는 확장자를 가진 파일에 저장됩니다.

인코딩

8비트 텍스트

역사적으로 7비트 ASCII 문자 집합은 8비트 EBCDIC 및 다양한 ASCII 확장은 물론 텍스트 파일을 인코딩하는 데 사용되었습니다. 8비트 코드 페이지에서는 코드 테이블의 전반부에 ASCII 문자를 사용하는 것이 일반적입니다.

8비트 텍스트 표현의 장점은 프로그래밍 방식의 단순성과 다른 플랫폼의 바이트 순서 또는 단어 길이 문제로부터의 독립성입니다. 단점은 비호환성을 초래할 수 있는 다양한 표준이 있다는 것입니다.) 때때로 특수 마커 문자(U + FEFF

이러한 불일치는 타자기 작동 원칙에 따라 결정됩니다. 새 줄로 이동하려면 캐리지를 줄의 시작 부분으로 되돌려야 합니다( 캐리지 리턴), 드럼을 한 줄( 줄 바꿈). 프린터에서 인쇄할 때 한 문자와 다른 문자가 떨어져 있을 수 있지만(예를 들어 한 줄을 두 번 인쇄하여 선택하거나 드럼을 몇 줄 스크롤하는 경우) 텍스트 파일은 필요하지 않습니다.

이 외에도 텍스트 파일에는 표(코드 9) 및 페이지 번역(코드 0xC)과 같은 기호가 포함되어 있습니다. 후자는 LEXICON과 같은 오래된 텍스트 편집기와 프린터에서 인쇄하기 위한 파일에서 사용되었습니다.

파일(영문 파일 - 바인더) - 컴퓨팅의 개념: 리소스에 액세스할 수 있도록 하는 엔터티 컴퓨팅 시스템다음과 같은 여러 기능이 있습니다.

  • 고정 이름(문자열, 숫자 또는 파일을 고유하게 특성화하는 기타 항목)
  • 특정 논리적 표현 및 해당 읽기/쓰기 작업.

비트 시퀀스(바이트로 읽거나 오히려 단어 그룹의 바이트 4, 8, 16)에서 임의의 조직 또는 중간 옵션이 있는 데이터베이스에 이르기까지 모든 것이 가능합니다. 다차원 데이터베이스, 엄격하게 정렬됩니다.

첫 번째 경우는 스트림 및/또는 어레이(즉, 순차적 또는 인덱스에 의한 액세스)의 읽기/쓰기 작업, 두 번째 - DBMS 명령에 해당합니다. 중간 옵션은 모든 종류의 파일 형식을 읽고 구문 분석하는 것입니다.

(무료 백과 사전, 위키피디아에서)

맙소사, 말도 안되는 소리야 (© olivur77).

뭔가 이해가 되시나요? 나 아니야. 물론 Wikipedia의 정의가 가장 정확할 가능성이 높지만 (나와 같은) 단순한 인간에게는 이해가 되지 않습니다.

파일이란? 일반 언어로 된 설명.

예를 들어 다시 설명하자면, 파일이란 무엇인가, 그리고 그 학문적 해석, 특히 영어 번역은 지루합니다.

"작은 사진"()을 클릭하면 사진을 볼 수 있는 프로그램(파일도, 때로는 여러 파일도 포함)이 열리는 이유가 궁금하신가요? 영화 바로가기()를 누르면 영화 감상 프로그램이 실행되나요? 무료 통신(예: 파일)을 위한 바로 가기(그런데 파일)를 클릭하면 친구 및 친척과 무료로 통신하고 서로 볼 수 있는 프로그램이 열립니다.

왜 그런 일이 발생합니까? Windows 운영 체제가 그렇게 똑똑하다고 생각한다면 큰 착각입니다.

나는 "영리함"의 신화를 불식하고 싶다 운영 체제 Windows 및 다음과 같은 개념을 익히십시오. "파일", "확장자", "형식".

언뜻보기에는 단어가 무섭고 이해할 수 없지만 실제로 모든 것이 매우 간단하며 곧 확신하게 될 것입니다.

이러한 개념을 이해하는 데 도움이 되는 한 가지 설정(아래 이미지 참조)을 만들어 보겠습니다.

"시작" 버튼을 누르고 "제어판"을 선택하십시오. "제어판"의 보기가 그림과 같지 않은 경우(그러나 이 보기가 기본적으로 설정되어 있기 때문에 "범주별 보기"일 가능성이 높음) "클래식 보기로 전환 ".

그런 다음 "폴더 옵션" 아이콘을 마우스 왼쪽 버튼으로 빠르게 두 번 클릭하면 폴더 속성 설정이 열립니다. 기본적으로 "일반" 탭으로 이동합니다. "보기" 탭을 마우스 왼쪽 버튼으로 클릭합니다.

"등록된 파일 형식의 확장명 숨기기" 옆에 있는 확인란을 마우스 왼쪽 버튼으로 클릭하여 선택을 취소합니다. 이 비문이 보이지 않으면 오른쪽 슬라이더(스크롤 막대)를 사용하여 메뉴 끝까지 "스크롤"합니다(마우스 포인터를 슬라이더 위로 이동하고 왼쪽 마우스 버튼을 누른 상태에서 슬라이더를 아래로 끕니다 ).

파일을 어떻게 생성합니까? 예를 들어 txt.

간단한 예부터 시작하겠습니다. 데스크탑에 일반 텍스트 문서(파일)를 생성해 보겠습니다. 우리는 이것을 다음과 같은 방식으로 할 것입니다.

바탕 화면에서 바로 가기가 없는 영역에 마우스 포인터(커서)를 놓습니다. 마우스 오른쪽 버튼을 클릭하고 "새로 만들기" - "텍스트 문서"를 마우스 왼쪽 버튼으로 클릭합니다.

바탕 화면에서 "텍스트 문서.txt"라는 이름 아래에 "텍스트가 있는 것처럼 스프링의 루스 리프 노트북" 이미지와 함께 바로 가기가 나타나야 합니다.

컴퓨터 말하기, 우리는 텍스트 파일을 만들었습니다. 우리가 이해하는 단어 외에도 파일 이름에 점과 3개의 이해할 수 없는 영어(라틴) 문자가 있습니다. 이 모든 것이 무엇을 위한 것이며 무엇을 위한 것입니까? 순서대로 가자.

텍스트 문서.txt실제로 다음으로 구성된 파일 자체의 이름입니다.

    1. 이름

이 경우 파일 이름은 텍스트 문서(원칙적으로 파일 이름은 무엇이든 될 수 있으며 하나 또는 여러 단어로 구성되며 밑줄, 대시 또는 공백과 같은 특수 문자를 포함할 수 있습니다. 우리의 경우 파일 이름은 2개의 단어와 하나의 특수 문자(이상하게도 충분히)로 구성됩니다. 즉, 우리에게 이것이 이해할 수 있는 단어의 조합인 경우 텍스트 문서, 컴퓨터는 이 이름을 텍스트 공간 문서로 인식합니다(참고용입니다. , 그것은 우리의 주제와 아무 관련이 없습니다. 단지 당신이 앞으로 충돌할 수 있으므로 당신에게 놀라움으로 다가오지 않도록 하기 위함입니다.)

    1. 분리 기호

마침표(.)는 파일 이름과 파일 확장자를 구분하는 문자입니다. 왜 정확히 요점입니까? 역사적으로 세기말부터. 그들은 단지 오래전에 프로그램이 탄생했을 때라고 결정했습니다. 예, 일반적으로 예쁘고 - 불필요한 것은 없으며 눈을 다치게하지 않습니다.

    1. 확장

확장이라는 단어 자체가 이해하기 더 쉬운 것 같습니다. 여기 파일 이름이 있습니다. 그들은 그것을 가져와서 몇 글자로 확장했고 파일 이름은 더 넓어졌습니다(글쎄, 또는 더 길어졌습니다). 우리의 경우 확장자는 다음과 같은 형식을 갖습니다. txt... 이것은 txt이며 우리가 이 파일(이 경우 텍스트 파일)에 쓰여진 내용을 보거나(이 경우 텍스트 파일) 쓸 수 있도록 이 파일을 열 프로그램을 운영 체제(Windows)에 알려줍니다. 그들은 또한 이 파일이 텍스트 형식이라고 말합니다(나중에 형식에 대해 자세히 설명).

여기까지가 분명하다면, 파일 확장자는 무엇입니까, 그런 다음 성인용 공식을 제공합니다. 파일 확장자는 운영 체제에 형식을 나타냅니다. 이 경우 파일은 txt 형식입니다.

나는이 주제의 틀 내에서 역사 여행을 할 것인지 여부를 오랫동안 생각했지만 그럼에도 불구하고이 여행에서 "왜 ..."라는 질문에 대한 몇 가지 답을 더 찾을 수 있기 때문에 쓰기로 결정했습니다.

옛날 옛적에 컴퓨터는 크고 약했다, 지금 컴퓨터 모니터에서 볼 수 있는 아름다운 다색 그래픽이 없었고 소련에서는 컴퓨터를 컴퓨터(전자 컴퓨터 또는 PC, 여기서 "P"는 개인을 의미함)라고 부르는 것이 관례였지만 프로그래머는 수학자. 그 당시 모니터 화면에는 검정색 배경에 흰색 또는 녹색 텍스트만 표시되었습니다. 그 당시 컴퓨터는 8비트였습니다(지금은 신경 쓰지 말고 믿으십시오). 모든 정보를 얻기 위한 싸움이었습니다. 다양한 표준이 개발되었습니다.

그래서 이 시대에는 파일 이름이 이름/분리자/확장자 형식으로 결정되었습니다.

다시 말하지만, 자원의 부족으로 인해 파일 이름 아래에 8자를 할당하고(8자 이하는 가능하지만 8자 이상은 불가능) 구분자로 점을 만들고, 확장 문자(문자)의 경우 3개만 가능합니다.

시간이 지났습니다. 진행은 멈추지 않았습니다. 컴퓨터는 우리의 눈을 즐겁게 하는 아름답고 아름다운 컬러 그래픽으로 작고 강력해졌습니다. 비트 깊이 개인용 컴퓨터 8배 증가했습니다. 이제 32비트 또는 64비트 운영 체제(대부분 Windows)가 설치된 32비트 또는 64비트 컴퓨터가 눈앞에 있습니다.

컴퓨터가 더욱 강력해짐에 따라 파일 이름 길이에 대한 제한이 덜 중요해졌습니다. 오늘은 최대 256자입니다.

그게 다야 전 세계적으로 수십억 개의 파일 이름이 있고 이러한 이름은 무엇이든 될 수 있으므로 이 256자만으로도 눈에 충분합니다. 확장 프로그램이 더 재미있습니다. 사실, 파일 형식은 그리 많지 않으며(물론 상대적으로) 일반적으로 3자 정도면 충분합니다. 이제 파일 확장자에 4자(더 있음)가 있지만 이것은 연속성에 가깝습니다. 예를 들어 Word 테스트 편집기에서 만든 파일은 마이크로소프트 패키지 Office 2003의 확장자는 .doc이며 패키지에서 Word 테스트 편집기로 만든 파일입니다. 마이크로 소프트 오피스 2007(이 패키지의 최신 버전)에는 .docx 확장자가 있습니다.

또 다른 흥미로운 점. 컴퓨터가 발전하자 마자 텍스트뿐만 아니라 그래픽이 모니터에 나타나기 시작했을 때 바로 가기가 나타났습니다. 큰 사이즈, 그래서 그들은 경멸적으로 쥐라고 불렸다). 따라서 레이블의 작은 그림(우리의 경우 이것은 "텍스트가 있는 것처럼 스프링에 있는 루스리프 노트북"의 이미지입니다) - 또한 종종 별도의 파일이기도 합니다. 그 당시에는 기본적으로 확장자 .ico는 영어 단어 아이콘의 3자리 약어입니다. 영어아이콘, 상징, 상징적인 이미지를 의미합니다. 그 이후로 이 작은 이미지를 아이콘이라고 합니다. 이 작은 이미지의 다른 이름은 픽토그램, 아이콘입니다.

그래서 우리의 램, 즉 데스크탑의 "텍스트 문서.txt" 파일로 돌아갑니다.

생성한 "Text document.txt" 파일의 바로가기를 마우스 왼쪽 버튼으로 빠르게 2번 클릭합니다. 음. (하지만 흥미롭게도 파일을 열려면 파일을 두 번 빠르게 클릭할 수 있습니까? 게다가 지금은 마우스를 움직일 수 없습니다. 클릭 사이에 마우스를 이동하면 바로 이 열기가 작동하지 않기 때문입니다. 그리고 배우지 않았습니다. 마우스 왼쪽 버튼을 빠르게 2번 연속으로 빠르게 클릭하는 방법 아마도 내 구부러진 손은 큰 망치를 위해 날카롭게 될 가능성이 높습니다. 따라서 저는 제 신경 세포를 저장하는 오래된 "구식" 방법을 사용합니다.) 그러나, 파일을 다르게 엽니다. 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 최상위 메뉴 항목 "열기"를 선택한 다음 마우스 왼쪽 버튼으로 클릭합니다. (우리는 마우스를 매우 자주 사용합니다. 사용법을 모르거나 잘 작동하지 않으면 에 대한 두 가지 수업을 들을 수 있습니다.)

우리는 무엇을 봅니까? "메모장" 프로그램에 의해 열린 빈 파일이 보입니다.

그건 그렇고, 쓰자. 내 인생의 게으른 사람으로, 나는 단지 키보드에 입력합니다. 또한, 할 수 있는 경우와 하지 않는 경우. 어딘가에서 (텍스트)를 복사하겠습니다. 텍스트를 인생에서 의미 있고 유용하게 만들기 위해 인터넷에서 내가 가장 좋아하는 팬케이크 레시피를 여기에 복사합니다. 그들은 너무 얇아서 비쳐 보이기까지 합니다.

텍스트 문서를 바탕 화면에 그대로 두십시오. 그리고 http://stamina.ru/blog/pitanie/blini 페이지의 무료 키보드 시뮬레이터 사이트에서 인터넷으로 이동하여 다음과 같이 레시피의 일부를 복사합니다.

마우스 포인터를 선택하려는 텍스트의 시작 부분으로 이동하거나 약간 왼쪽으로 이동하여 마우스 왼쪽 버튼을 누르고 마우스 버튼을 누른 상태에서 마우스 포인터를 끝 부분으로 "이동"합니다. 필요한 텍스트 조각. 선택한 텍스트 영역에 만족하면 왼쪽 마우스 버튼을 놓고 즉시 마우스 오른쪽 버튼을 클릭합니다(그림은 동일한 작업의 다른 버전을 설명함). 마우스 포인터를 "복사" 메뉴 항목으로 이동하고 마우스 왼쪽 버튼을 클릭하는 메뉴가 나타납니다.

글쎄, 일종의 참조 디스크를 가져 가자. 예를 들어, 컴퓨터에 10GB(기가바이트) "G:" 드라이브가 있습니다. 또는 10,000,000,000바이트의 바이트가 있는 경우(실제로는 조금 더 있지만 지금은 중요하지 않습니다).

"Pancake recipe.txt"와 같은 파일이 이 디스크에 들어갈 것이라고 쉽게 계산할 수 있습니다. 10GB를 507바이트로 나누고 약 19,723,866개의 파일을 얻습니다(실제로는 조금 더 적지만 우리에게 이것은 중요하지 않습니다. 지금) ...

대략적으로 말하자면, 10GB 디스크에는 Pancake Recipe.txt와 같은 2천만 개의 파일을 수용할 수 있습니다.

여기에서 간단한 텍스트 파일의 예를 사용하여 "파일", "형식", "확장자"와 같은 개념의 의미를 고려하기 시작한 기사의 첫 번째 부분을 끝내고 싶습니다. 에서 우리는 이미지 파일, 음악 및 비디오 파일과 같은 더 "무거운" 파일 형식과 이에 수반되는 훨씬 더 많은 파일 형식에 대해 이미 이러한 개념을 고려할 것입니다.

그게 다야. 모두에게 행운과 창의적인 성공을 기원합니다. 🙂

추신또한 기사의 두 번째 부분인 약과 세 번째 부분을 읽으십시오.

우리는 거의 매일 텍스트 파일(문서)을 접합니다. 그러나 이 문제에서 텍스트 파일의 확장자와 텍스트 데이터 형식을 혼동해서는 안 됩니다. 이 유형의 파일이 무엇인지, 어떤 파일인지 확인해 보겠습니다.

텍스트 파일 확장자: 무엇입니까?

일반적으로 이 유형의 대부분의 파일에는 구분 기호(마침표) 뒤에 세 글자 확장자가 있다는 사실부터 시작하겠습니다. 가장 단순하고 가장 일반적인 유형은 확장자가 .txt인 파일로, 동일한 파일에서 열립니다. 윈도우 시스템표준 "메모장"을 사용합니다.

그러나 일반적으로 허용되는 규칙에도 불구하고 텍스트 문서의 파일 확장자는 e-book files.djvu와 같이 세 글자가 아니라 그 이상(최대 12자까지 가능)을 포함할 수 있습니다. 또한 내선 번호에 숫자가 있을 수 있습니다.

식별 측면에서 텍스트 파일(문서)의 분류를 고려하는 것은 무엇입니까? 그리고 한 눈에 당신이 중요한 질문을 즉시 해결할 수 있다는 사실: 텍스트 파일의 확장자는 무엇이며, 열거나 편집하기 위해 파일과 연결된 프로그램입니다. 대부분의 경우 이러한 파일이 생성된 원래 응용 프로그램을 거의 항상 식별할 수 있습니다.

그러나 오늘날에는 확장자가 동일하지만 다른 응용 프로그램에서 생성되거나 다른 프로그램과 연결된 상당히 많은 수의 파일을 찾을 수 있다는 것을 잊지 마십시오. 확장자가 .doc(.docx)인 일반 파일이 처음에는 일치하는 것 같습니다. 텍스트 에디터 마이크로 소프트 워드... 그러나 "애플" 컴퓨터에서도 열거나 이 형식으로 다른 형식으로 저장할 수 있습니다. 여기에는 텍스트뿐만 아니라 그래픽도 포함하는 혼합 유형의 .pdf 파일도 포함될 수 있습니다. 하지만 결국 워드 문서삽입된 이미지를 포함할 수 있습니다.

이것은 텍스트 파일의 확장자가 사용되는 운영 체제에 관계없이 가장 "가독성"이 높은 형식 자체의 다양성을 나타냅니다. 어떤 유형이든 마찬가지입니다.

파일 확장자 유형: 텍스트

일반적으로 오늘날 많은 수의 텍스트 형식과 확장자가 알려져 있으므로 실제로 전체 수를 계산하는 전문가는 없을 것입니다.

예, 물론 그러한 문서의 보편성은 특히 가장 단순한 것을 사용하는 경우 의심의 여지가 없습니다.그러나 때때로 문제는 모든 인코딩이 특정 시스템이나 프로그램에서 지원되지 않는다는 것입니다. 이것이 화면에 일반적인 문자 대신 일련의 기호가 나타나는 이유입니다.

텍스트 파일의 종류는 모두 나열할 수 없습니다. 가장 일반적인 것은 .txt, .doc, .tex, .text, .pdf, .log, .apt, .ttf, .err, .sub, .djvu, .odt, .rtf 및 기타 여러 파일입니다. 목록은 끝이 없습니다.

가장 흥미롭게도 이러한 유형의 파일 중 상당수는 시스템에서 다른 역할을 합니다. 예를 들어 일반적인 .sub 자막 파일 외에도 일반 텍스트 문서 .txt가 비디오를 열 때 볼 수 있으며 이와 관련하여 많은 형식을 상호 교환할 수 있습니다.

실행 파일도 내용으로 텍스트를 가질 수 있습니다. 가장 간단한 예- 일반 "메모장"에서 생성되고 일련의 명령 형식으로 텍스트를 포함하는 .bat 파일. 시작할 때 명령이 실행되고 이 프로세스가 처음에 다른 작업과 연결되지 않는 한 편집에 "연결 프로그램 ..." 메뉴가 사용됩니다.

마크업 또는 프로그래밍 언어(예: .html, .htm, .xml 파일 등)를 사용하는 문서에서도 유사한 상황이 관찰됩니다. 웹 페이지도 타사 요소가 포함된 텍스트 파일로 많은 편집기에서 기본적으로 열릴 수 있습니다.

텍스트 파일의 확장자 변경

확장자를 변경하는 경우 예를 들어 .txt에서 .doc로 또는 그 반대로 변경할 수 있습니다. Word 편집기는 모든 유형을 엽니다. 메모장에서 열 때 .txt - .bat 쌍에도 동일하게 적용됩니다. 그러나 다른 경우에는 그러한 조작을 수행하지 않는 것이 좋습니다. 단순히 아무 것도 유도하지 않으며 다른 응용 프로그램에서 이름이 변경된 파일을 열 수 없습니다. 형식을 변경하려면 특수 변환기 프로그램을 사용해야 합니다.

뒷말 대신

이미 분명한 바와 같이 텍스트 파일의 확장자는 문서가 생성된 프로그램에 따라 다양한 변형이 있을 수 있습니다. 그러나 다른 경우와 마찬가지로 확장 자체에 의해 초기에 연결된 응용 프로그램을 결정하는 것이 거의 항상 가능합니다. 극단적인 경우에는 원래 응용 프로그램이 컴퓨터에 없습니다. 그리고 이미 분명히 알 수 있듯이, 실제로 사용되는 소프트웨어 패키지와 운영 체제에 관계없이 컴퓨터 세계에서 가장 광범위하고 보편적인 것은 텍스트 파일입니다.

주제 №10:파일. 일반적인 파일. 텍스트 파일.

기본 개념

파일 동일한 유형의 요소(레코드) 시퀀스인 기술 매체의 명명된 데이터 구조입니다.

파일 크기가 무제한인 가변 길이 배열입니다.

파일은 다른 복잡한 구조의 일부일 수 있지만 다른 파일의 일부가 아니어야 합니다.

파일과 배열의 차이점:

A) 외부 매체에 배치

B) 파일의 길이가 지정되지 않았습니다.

C) 요소의 위치는 인덱스에 의해 결정되지 않습니다.

파일을 지정하고 작업하려면 다음을 사용하십시오. 파일 변수(FP).

파일 변수파일을 참조하고 참조하기 위해 프로그램에서 사용되는 변수입니다.


파일 변수의 기능:

값을 할당할 수 없습니다.

그녀는 논리적 작업에 참여할 수 없습니다.

그녀는 수학적 표현을 입력할 수 없습니다

파일 변수 선언

파일은 파일 요소 유형의 표시와 함께 변수 선언 섹션에서 선언됩니다.

파일 형식

파일 설명

타이핑

Var F1: 정수 파일;

F2: char 파일;

입력되지 않음

텍스트

파일 작업

A) 파일에 쓰기

할당(FP, '이름')

쓰기 위해 파일 열기

파일에 데이터 쓰기

쓰기(FP, 데이터);

Writeln(FP, 데이터); - 텍스트용

파일 닫기

B) 파일에서 읽기

우리는 파일(존재하지 않을 수 있음)과 이름 이름을 파일 변수(FP)와 연결합니다.

할당(FP, '이름')

읽기 위해 파일 열기(포인터는 첫 번째 요소로 설정됨)

파일에서 변수로 데이터를 읽고 파일 포인터를 앞으로 이동합니다.

읽기(FP, 변수);

Readln(FP, 변수); - 텍스트용

파일 닫기

파일로 작업할 때 파일 포인터 또는 인덱스의 개념, 즉 파일의 특정 위치에서 자기 헤드의 위치가 사용됩니다.

텍스트 파일의 길이 결정

Pascal에는 텍스트 파일에 기록되는 줄 수를 결정하는 명령이 없습니다. 그러나 파일 포인터가 마지막 줄에 도달한 순간을 알려주는 기능이 있습니다. - EOF(파일 끝)

EOF(FP) -기능 확인

텍스트 파일의 끝에 도달

파일 끝에 도달하면 EOF가 참입니다.

파일의 끝에 도달하지 않으면 EOF는 거짓입니다.

알 수 없는 행 수를 포함하는 텍스트 파일을 읽는 예입니다. 프로그램이 끝나면 화면에 줄 수를 표시합니다.

변수 f: 텍스트; N: 정수; s: 문자열;

할당(f, 'c:\MyText.Txt');

하는 동안 Eof(f) = 거짓 하다 (이 줄을 더 짧게 작성할 수 있습니다. 하는 동안 Eof (f) 아님 ~하다}

Writeln("파일 c:\MyText.Txt", N, "줄");

바이너리 파일 길이 결정

바이너리 형식의 파일의 경우 텍스트 파일을 읽을 때 사용하는 방법이 적용됩니다. EOF 함수는 텍스트 및 이진 파일 모두에 대해 동일하게 작동합니다.

또한 바이너리로 작업할 때 바이너리 파일의 길이를 결정하는 FileSize 함수를 사용할 수 있습니다.

파일 크기(FP) -바이너리 파일의 길이를 반환하는 함수

이진 정수 파일에서 모든 숫자를 읽고 그 합을 찾는 프로그램:

Var f: 정수 파일;

합계, i, T: 정수;

할당(f, 'c:\MyFile.Int');

을위한 i: = 1 ~ 파일 크기(f) 하다 (다른 루프를 사용할 수 있습니다. 하는 동안 Eof (f) 아님 ~하다}

Writeln("c:\MyFile 파일에 있는 숫자의 합입니다. Int is", Summ);

Writeln("파일 길이 c: \ MyFile.Int", FileSize(f), "숫자");

이진 탐색

바이너리 파일의 경우 읽기/쓰기 포인터를 원하는 파일 위치로 이동하는 Seek 프로시저가 있습니다.

찾다. 목표물 탐색 (FP, 포지션) -포인터를 이동

주어진 파일 위치로

이진 실제 파일의 지정된 위치에서 숫자를 0으로 만들고 이 숫자를 파일 끝에 추가하는 프로그램입니다.

Var f: 실제 파일; (실제 파일에 대한 파일 변수 선언)

N: = 파일 크기(f); (파일에 있는 숫자의 수를 결정하자)

반복(주기 시작)

Writeln("파일 ', N,' 숫자 '' ');

Writeln("파일의 끝으로 이동하려는 숫자의 번호를 입력하시겠습니까?");

(Poz> = 0) 및 (Poz)까지<=N) {выход из цикла, только если в данном файле такая позиция существует}

탐색(f, Poz); (파일 포인터를 주어진 위치에 위치)

읽기 (f, R); (주어진 파일 위치에서 R 변수로 숫자를 읽으면 포인터가 한 위치 앞으로 이동합니다)

탐색(f, Poz); (포인터를 주어진 위치로 되돌림)

쓰기(f, Null); (포인터가 설정된 숫자 0)

탐색(f, N); (포인터를 파일 끝으로 이동)

쓰기 (f, R); (R 변수의 숫자를 파일의 끝까지 쓰기)

바이너리 파일 줄이기

이진 파일을 자르려면 추가 정보가 있는 위치에 파일 포인터를 설정하고 Truncate 프로시저를 사용하여 추가 부분을 잘라야 합니다.

자르기(FP ) 파일 포인터 뒤의 데이터를 자르는 절차

바이너리 파일에 처음 10개의 숫자만 남기는 프로그램:

Var f: 실제 파일; (파일 변수 선언)

할당(f, 'c: \ MyRealFile.rlf'); (파일 변수를 파일에 바인딩)

리셋(f); (읽기 및 쓰기를 위해 파일을 엽니다)

탐색(f, 10); (파일 포인터를 주어진 위치에 위치)

자르기(f); (파일 포인터보다 더 멀리 있는 파일에서 모든 것을 잘라냅니다)

텍스트 파일에 정보 추가

불행히도 텍스트 파일로 작업할 때 파일 중간이나 시작 부분에 정보를 삽입할 수 있는 방법이 없습니다. 파일에서 가능한 유일한 변경 사항은 파일 끝에 줄을 추가하는 기능입니다. 이를 위해 파일을 열어 추가해야 합니다.

NS추가하다(FP)- 텍스트 파일을 여는 절차

라인을 추가하려면

텍스트 파일의 끝에 두 줄을 추가하는 프로그램:

Var FT: 텍스트; s: 문자열;

할당(FT, 'q. Txt');

S: = '처음 추가된 줄'; Writeln(FT, S);

S: = '두 번째 추가된 줄'; Writeln(FT, S);

파일 이름 바꾸기, 이동

디스크에 정보를 저장하는 작업을 할 때 한 폴더에서 다른 폴더로 정보를 전송할 때(데이터 복제본이 생성되는 복사와 반대) 데이터가 실제로 전송되지 않는다는 점에 유의해야 합니다. 한 폴더에서 다른 폴더로 정보를 전송할 때 파일의 경로만 변경됩니다. 즉, 실제로 파일 이름만 변경됩니다.

따라서 Pascal에서는 동일한 명령이 파일 이름 변경과 디렉토리 간 파일 전송을 모두 수행합니다.

이름 바꾸기 (FP, New_file_name)파일의 이름을 변경하고 디렉토리로 전송하는 절차,

새 파일 이름에 지정됩니다.

이름 바꾸기 명령은 닫힌(또는 아직 열리지 않은) 파일에서만 작동합니다. 따라서 사용하기 전에 파일을 열어 데이터를 읽거나 쓰거나 추가할 필요가 없습니다. 또는 파일이 이미 열려 있으면 먼저 닫아야 합니다.

프로그램은 'q1.txt' 파일에 사용자가 입력한 새 이름을 부여하고 파일 'NS2. txt'디렉토리로':\ 문서\’.

Var FT: 텍스트; s: 문자열;

할당(FT, 'q1.txt'); (파일 변수를 파일에 바인딩)

Writeln('q1.txt 파일의 새 이름을 입력하세요');

Readln(들); (키보드에서 새 파일 이름을 s 변수로 읽음)

이름 바꾸기(FT, s); (파일 이름을 바꿉니다)

할당(FT, 'q2.txt'); (파일 변수를 두 번째 파일에 바인딩)

이름 바꾸기(FT, 'c:\문서\q2.txt'); (파일을 같은 이름의 지정된 디렉토리로 전송)

파일을 다른 디스크로 전송하려면 파일을 복사한 다음 같은 위치에서 삭제해야 합니다.

파일 복사 및 삭제

사자: 파일을 복사하려면 한 파일의 모든 레코드를 읽어서 새로 생성된 파일에 써야 합니다.

제거:파일을 삭제하려면 파일 변수(닫힌 파일과 연결됨)에 Erase 프로시저를 적용하면 됩니다.

삭제 (FP) 파일 변수와 관련된 파일을 제거하는 절차.

프로그램은 "C" 드라이브에서 di로 파일을 복사합니다.NS 'NS'그리고 "C"드라이브에서 원본을 삭제합니다(사실, 프로그램은 한 드라이브에서 다른 드라이브로 파일을 전송합니다)

Var f1, f2: 바이트 파일;

할당(f1, 'c:\MyFile.Int'); 리셋(f1); (읽기 위해 샘플 파일을 엽니다)

할당(f2, 'd:\MyFile.Int'); 다시 쓰기(f2); (드라이브 D에 파일 생성)

하는 동안 Eof가 아님(f1) ~하다

읽기 (f1, b); (원본 파일에서 데이터 읽기)

쓰기 (f2, b); (새 파일에 데이터 쓰기)

닫기(f1); (샘플 파일을 닫고 파일을 삭제하기 전에 반드시 삭제해야 함)

닫기(f2); (새 파일 닫기)

지우기(f1); (파일을 삭제)

카탈로그 작업

MkDir(디렉토리 이름) - 절차 새로운목록

(이 이름의 디렉토리가 존재하면 오류가 발생합니다.)

RmDir(디렉토리 이름) - 절차 제거목록

(빈 디렉토리만 삭제할 수 있음)

ChDir(디렉토리 이름) - 절차 현재를 변경목록

(현재 디렉토리는 디렉토리로, 파일 작업시 필요하지 않은 경로입니다. 프로그램을 켰을 때 현재 디렉토리는 프로그램이 위치한 디렉토리입니다.)

을위한 이름 바꾸기목록필요한 :

a) 새 디렉토리 생성

b) 모든 파일을 그곳으로 이동

c) 이전 디렉토리 삭제

프로그램은 두 개의 파일 "q1.txt"와 "q2.ini"를 포함하는 "c: \ Cat \" 디렉토리의 이름을 "c: \ CatNew \" 디렉토리로 변경하고 현재 디렉토리를 만듭니다.

Var f1, f2: 바이트 파일; b: 바이트;

MkDir("c:\CatNew"); (새 디렉토리 생성)

(q1.txt 파일을 새 거니에 복사)

할당(f1, 'c: \ Cat \ q1.txt'); 리셋(f1);

할당(f2, 'c:\CatNew\q1.txt'); 다시 쓰기(f2);

하는 동안 Eof가 아님(f1) ~하다

시작하다읽기 (f1, b); 쓰기 (f2, b); 끝;

(q2.ini 파일을 새 디렉토리에 복사)

할당(f1, 'c: \ Cat \ q2.ini'); 리셋(f1);

할당(f2, 'c: \ CatNew \ q2.ini'); 다시 쓰기(f2);

하는 동안 Eof가 아님(f1) ~하다

시작하다읽기 (f1, b); 쓰기 (f2, b); 끝;

닫기(f1); 닫기(f2); 지우기(f1);

RmDir('c:\Cat'); (이전 디렉토리 삭제)

ChDir('c:\CatNew'); (새 디렉토리를 현재로 만들기)

파일 검색

프로그래머는 어떤 파일이 어떤 디렉토리에 있고 어떤 디렉토리가 특정 디스크에 있는지 항상 알지 못합니다. 따라서 파일 작업의 중요한 주제는 파일(및 디렉토리)을 찾는 것입니다.

모듈에 있는 파일 검색을 위한 두 가지 절차가 있습니다. 윈도스:

먼저 찾기(마스크, 플래그, 정보_섹터)- "mask" 및 "flag"와 일치하는 첫 번째 파일을 검색합니다. 발견된 경우 찾은 파일(디렉토리)에 대한 데이터를 유형의 변수로 전송합니다. TSearchRec("정보수신자")

찾다다음(수신자_정보)- FindFirst 프로시저에서 설정한 조건과 일치하는 다음 파일을 검색하고, 발견되면 찾은 파일(디렉토리)에 대한 데이터를 형의 변수로 전달 TSearchRec("정보수신자")

기준 치수 윈도스변수도 포함 도스오류검색 명령이 검색 조건과 일치하는 파일을 찾는 한 0으로 유지됩니다. 검색 명령이 조건과 일치하는 파일을 찾지 못한 경우 변수

마스크 검색 -검색 중인 파일 또는 디렉토리의 이름이 있는 문자열입니다. 마스크에는 일반적인 문자 외에도 "*" 및 "?"가 포함될 수 있습니다.

* - 이 위치의 필수 파일에 임의의 수의 문자가 있을 수 있음을 의미합니다.

? – 이 위치의 필수 파일에 하나의 문자가 있을 수 있음을 의미합니다.

마스크의 예:

"*.* '- 확장자를 가진 모든 파일

"퀘스트 *"- 이름이 있는 파일" 퀘스트 "및 모든 확장자

"* .txt"- 이름과 확장자가 "txt인 파일"

"질문? .txt"- 확장자가 'txt'인 파일로, 이름에 5개의 문자가 포함되어 있으며, 그 중 처음 4개는 'qust'이고 5번째 문자는 any입니다.

"쿼리 * .txt"- 확장자가 'txt'인 파일, 처음 네 글자가 ' qust '이고 다음 글자의 수에는 제한이 없습니다.

"NS유에스트. txt'- 이름이 "퀘스트"이고 확장자가 "txt"인 파일

플래그 검색 - OR 연산자로 연결된 특수 상수 집합입니다.

상수 대신 해당 상수와 숫자의 합과 같은 숫자를 사용할 수 있습니다.

깃발

파일 형식

숫자

faReadOnly

읽기 전용 속성으로 검색

파히든

"숨김" 속성으로 검색

faSys파일

"시스템" 속성으로 검색

fa볼륨ID

미디어 ID 반환

faDirectory

디렉토리 정보 반환

파아카이브

"아카이브" 속성으로 검색

faAnyFile

모든 이전 플래그 포함

플래그의 예:

· faReadOn 또는 파히든 – 3 - "숨김" 또는 "읽기 전용" 속성이 있는 파일 찾기

· faDirectoty 또는파시스파일 - 20 – "시스템" 속성이 설정된 디렉토리 및 파일 찾기

정보수신자 -유형의 변수 TSearchRec,찾은 파일에 대한 데이터가 포함됩니다.

TSearchRec 유형은 WinDos 모듈에 설명되어 있으며 프로그래머의 사전 설명이 필요하지 않습니다. 이 유형은 다음 형식의 레코드입니다.

유형 TSearchRec = 레코드

채우기: 바이트 배열; (시스템 매개변수, 당사에서 사용하지 않음)

속성: 바이트; (파일 플래그 데이터를 포함하는 매개변수)

시간: LongInt; (파일 생성 시간)

크기: LongInt; (바이트 단위의 파일 크기)

이름: Char 배열; (파일 이름)

TSearchRec 유형의 변수 SR이 있다고 가정해 보겠습니다. FindFirst 명령에서 사용한 후 찾은 파일(디렉토리)에 대한 정보가 포함됩니다.

파일 이름 정보는 SR로 이동합니다. 이름, SR의 파일 크기에 대한 정보입니다. 크기를 지정하고 파일이 시스템 파일인지 확인하려면 SR 값을 연결해야 합니다. FaSysFile 상수 And 연산자가 있는 Attr. 결과가 0보다 큰 경우 시스템 파일입니다.

예시 :

만약 씨 속성 및 FaSysFile> 0그런 다음 Writeln("시스템");

프로그램은 "txt" 확장자를 가진 모든 파일에 대해 "c: \ Doc" 디렉토리를 검색합니다. 그리고 크기가 3000바이트 이상인 것들의 이름을 표시합니다.

Dos, crt, WinDos를 사용합니다.

Var SR: TSearchRec; (찾은 파일에 대한 정보를 저장할 변수를 설명합니다)

clrscr; ChDir("c:\Doc"); (현재 디렉토리 변경)

FindFirst("*.Txt", faAnyFile, SR); (현재 디렉토리에서 확장자가 "txt"이고 플래그 집합이 있는 첫 번째 파일을 찾고 있으며 결과는 SR 변수에 있습니다)

while DosError = 0 do (파일이 있는 동안 루프)

만약 SR. 크기> 3000(파일 크기가 3000바이트 이상인 경우)

그런 다음 writeln(SR. 이름); (찾은 파일명을 화면에 표시)

프로그램은 C 드라이브의 루트 디렉터리에서 드라이브에 있는 모든 디렉터리를 검색하고 "c:\info.txt" 파일의 디렉터리 목록을 표시합니다. txt' 그리고 화면에서 ("C" 드라이브의 루트 디렉토리는 "c: \" 디렉토리입니다).

Dos, crt, WinDos를 사용합니다.

Var SR: TSearchRec; f: 텍스트;

Clrscr; 할당(f, "c: \ info. Txt"); 다시 쓰기(f);

ChDir("c:\"); (루트 디렉토리로 이동)

FindFirst("*", faDirectory, SR); (디렉터리를 포함하여 확장자가 없는 파일을 찾고 있습니다)

하는 동안 DosError=0 ~하다(파일이 있는 동안 루프)

만약 SR. Attr 및 faDirectory> 0 then(파일에 "Directory" 속성이 있는 경우)

Writeln (SR. 이름); (화면에 파일 이름을 표시)

Writeln (f, 시니어 이름); (파일명을 "c:\info.txt" 파일에 출력)

다음 찾기(SR); (다음 파일을 찾는 중)

파일 변수 작업 절차

절차

약속

논평

할당(f, '이름')

파일 변수를 특정 파일에 바인딩합니다(변수를 파일 이름에 바인딩). 파일 변수를 처음 사용하기 전에 배치됩니다.

문자열 변수(S)를 통해 파일명 'name'을 설정할 수 있습니다. Assign(f, S)

리셋(f)

기존 파일을 열고 녹음 시작 부분에 대한 포인터를 설정합니다.

모든 파일에 대해

다시 쓰기(f)

새 빈 파일을 만들고 파일의 시작 부분에 대한 포인터를 설정합니다. 파일이 존재하면 그 내용이 파괴됩니다.

모든 파일에 대해

닫기(f)

닫기 파일 열기

모든 파일에 대해

지우기(f)

이전에 닫은 파일 지우기

모든 파일에 대해

이름 바꾸기(f, f1)

파일 f의 이름을 파일 f1으로 바꿉니다. 파일 f는 미리 닫아야 합니다.

모든 파일에 대해

읽기(f, v1, ... vn)

쓰기(f, v1, ... vn)

변수 v1, ... vn의 값을 파일 f에 씁니다.

유형이 지정된 파일과 유형이 지정되지 않은 파일의 경우

Readln(f, v1, .. vn)

파일 f에서 변수 v1, ..vn으로 레코드를 읽습니다.

Writeln(f, v1, .vn)

변수 v1, .. vn의 값을 파일 f에 씁니다.

형식화된 파일에서 유효하지 않음

추가(f)

파일을 열고 파일 끝 표시에 대한 포인터를 설정합니다.

레코드를 추가하는 데 사용

탐색 (f, n)

번호가 매겨진 레코드에 대한 포인터를 설정합니다.

자르다(f)

포인터 뒤의 모든 레코드를 제거하고 이 위치에 파일 끝 표시를 씁니다.

파일 변수로 작업할 때의 기능

절차

약속

논평

파일 끝 정보 검색 포인터가 파일 끝에 있으면 True, 그렇지 않으면 False

논리적 기능.

포인터가 줄 끝 표시에 있으면 True, 그렇지 않으면 False

논리적 기능. 을위한 텍스트파일

N: = 파일 크기(F);

파일의 레코드 수 확인

N: = 파일포스(f)

레코드 포인터가 가리키는 레코드의 번호를 반환합니다. 첫 번째 레코드의 번호는 0입니다.

샘플 프로그램

문제 1: 프로그램을 작성하고,작성자에 대한 데이터와 20개의 난수를 텍스트 파일에 쓰기

무작위화하다; (난수 생성기 설정)

다시 쓰기 (f); (쓰기 위해 파일을 엽니다)

r: = 무작위(10); (우리는 1에서 10까지의 난수를 생성합니다)

STR(r,s); (숫자 r을 문자열 s로 변환)

writeln (f, s); (숫자가 있는 문자열을 파일에 쓰기)

닫기 (f); (파일을 닫는다)

목적 2: 프로그램을 작성하고,텍스트 파일에서 작성자 및 20개의 난수에 대한 데이터 읽기

r, i, c: 정수;

할당(f, "dddddd.txt"); (파일 변수를 파일에 연결)

리셋(f); (읽기 위해 파일을 엽니다)

for i: = 1 ~ 20 do (20회 반복을 위해 루프를 켭니다)

readln(f, s); (파일에서 줄 s로 번호 읽기)

발(s, r, c); (변수 "c"에서 가능한 오류 코드에서 문자열 "s"를 숫자 "r"로 변환)

c = 0이면 writeln(r); (오류가 없으면(c = 0) 화면에 숫자를 표시합니다.)

닫기 (f); (파일을 닫는다)

목적 3: 이차 방정식의 근을 계산하고 결과를 파일로 출력합니다.

변수 a, b, c, x1, x2, d: 실수;

할당(f, 'result.txt); (파일을 파일 변수 f에 바인딩)

다시 쓰기(f); (쓰기 위해 파일을 엽니다)

(키보드에서 초기 데이터를 읽고 파일로 보냅니다)

Writeln(f, '제곱 ur-i의 해');

Writeln(f, "a=", a: 6:3, "b=", b: 6:3, "c=", c: 6:3);

(2차 방정식의 근을 계산)

d> = 0이면 X1 시작: = - b + sqrt (d) / (2 * a); X2: = - b-제곱(d) / (2 * a); 끝;

(결과를 파일로 출력)

만약 d<0 then writeln(f,’у урав-я нет корней’)

else writeln (f, '근: x1 =', x1: 6: 3, 'x2 =', x2: 6: 3);

(파일을 닫고 프로그램을 종료)

Writeln('결과.txt 파일에서 프로그램 작업의 결과');

디스크에는 Karl이라는 파일이 포함되어 있습니다. 혀 트위스터가 포함된 txt: "Karl은 Clara에게서 산호를 훔쳤고, Clara는 Karl에게서 클라리넷을 훔쳤습니다." 문자 "K"의 수를 계산해야 합니다.

변수 f: 텍스트; s: 정수; 에이: 문자;

(파일을 파일 변수에 연결하고 쓰기 위해 엽니다)

할당(f, 'Karl. Txt'); 리셋(f);

(파일의 모든 라인을 마지막까지 순차적으로 살펴봅니다)

eof (f)가 ​​아닌 동안

(우리는 줄의 마지막 문자까지 줄의 모든 문자를 순차적으로 읽고 "k"에 대해 확인합니다)

동안 (f) 하지 않는 동안

읽기 시작(f, a); a = 'k'이면 s: = s + 1; 끝;

(파일의 다음 줄로 이동)

텍스트 파일에 텍스트 삽입 f1. 파일 f1에서 f2까지 줄을 다시 작성하십시오. 파일의 전반부는 정방향으로, 후반부는 문자의 역순으로 작성하십시오.

변수 f1, f2: 텍스트; s, snew, sa, sb: 문자열; n, y, i: 정수;

(파일 변수에 파일 링크)

할당(f1, 'file1'); 할당(f2, 'file2');

(키보드에서 라인을 읽고 파일 번호 1로 보냅니다)

다시 쓰기(f1); Readln(들); 쓰기(f1, s); 닫기(f1);

(파일 번호 1에서 줄을 읽습니다)

리셋(f1); 읽기(f1, s1); 닫기(f1);

(선의 중간 찾기)

N: = 길이(s1); Y: = n div 2;

(새 변수에서 행의 전반부를 정방향으로 쓰고 후반부를 역순으로 씁니다)

i의 경우: = 1에서 y까지

새뉴: = 새뉴 + s1 [i];

i의 경우: = n 아래로 y + 1 do

새: = 바느질 + s1 [i];

(파일 # 2에 새 줄 쓰기)

다시 쓰기(f2); Writeln(sNew); 쓰기 (f2, sNew); 닫기(f2);

텍스트 파일

텍스트 파일은 표준 TEXT 유형의 파일 변수와 연관됩니다. 텍스트 파일은 텍스트를 저장하도록 설계되었습니다. 정보. 예를 들어 프로그램의 소스 코드가 저장되는 것은 이러한 유형의 파일입니다. 텍스트 파일의 구성 요소(레코드)는 길이가 가변적일 수 있으며, 이는 작업 방식에 상당한 영향을 미칩니다.

텍스트 파일은 Turbo Pascal에서 가변 길이의 라인 모음으로 해석됩니다. 각 줄은 첫 번째 줄부터 순차적으로만 액세스할 수 있습니다. 텍스트 파일을 생성할 때 각 레코드(줄) 끝에 특수 기호 EOLN(End OfLiNe - 줄 끝)을 넣고 전체 파일 끝에 - 기호 EOF(파일 끝 - 파일 끝) . 이러한 기능은 동일한 이름의 논리적 기능으로 테스트할 수 있습니다(아래 참조). 텍스트 파일을 생성할 때 다음 시스템 규칙이 사용됩니다.

EOLN-ASCII 코드 시퀀스 #13(CR) 및 #10(LF);

EOF는 ASCII 코드 # 26입니다.

레코드에 액세스하기 위해 READ, READLN, WRITE, WRITELN 절차가 사용됩니다. 문자, 문자열 및 숫자가 될 수 있는 다양한 실제 매개변수를 사용하여 액세스하는 기능이 다릅니다. 나열된 프로시저의 첫 번째 매개변수는 파일 변수일 수 있습니다. 이 경우 ASSIGN 프로시저의 변수와 연관된 디스크 파일 또는 논리 장치가 호출됩니다. 파일 변수를 지정하지 않으면 표준 INPUT 파일이 OUTPUT을 참조합니다.

절차읽다.

문자, 문자열 및 숫자에 대한 입력을 제공합니다. 요청 형식:

읽다 (<ф.п.>,<сп.ввода>) 또는 읽기(<сп.ввода>)

여기<сп.ввода>- 입력 목록: 정수 또는 실수 유형뿐만 아니라 CHAR, STRING 유형의 하나 이상의 변수 시퀀스.

CHAR 유형의 변수를 입력할 때 파일에서 한 문자를 읽고 읽은 값을 변수에 할당합니다. 읽기 전에 파일 포인터가 다음 줄의 끝에 도달하면 읽기 결과는 CR 문자(ASCII 코드 # 13)가 되고 파일 끝에 도달하면 EOF 문자(코드 # 26 ). 키보드 입력의 경우 Enter 키를 눌러 CR을 입력하고 CTRL과 Z 키를 동시에 눌러 EOF를 입력합니다.

STRING 유형의 변수를 입력할 때 이전에 CR 또는 EOF 문자가 발견되지 않은 경우 프로시저에서 읽고 문자열에 배치된 문자 수는 문자열의 최대 길이와 같습니다. 이 경우 CR 및 EOF 문자 자체가 문자열에 맞지 않습니다. 입력 데이터 스트림의 문자 수가 최대 문자열 길이를 초과하면 문자열 끝에 있는 "추가" 문자가 삭제되고 새 READ 호출은 빈 문자열을 반환합니다. 따라서 READ 프로시저는 일련의 행을 읽을 수 없습니다. 첫 번째 행은 정상적으로 읽히고 모든 후속 행은 비어 있습니다. 일련의 행을 입력하려면 READLN 절차를 사용해야 합니다(아래 참조).

숫자 변수를 입력할 때 READ 루틴은 먼저 다음 규칙에 따라 입력 스트림에서 부분 문자열을 선택합니다. 모든 선행 공백, 탭 및 EOLN 줄 끝은 건너뜁니다. 반대로 첫 번째 유효 문자를 선택한 후에는 나열된 문자 또는 EOF 문자 중 하나가 하위 문자열 끝의 표시로 사용됩니다. 이러한 방식으로 선택된 부분 문자열은 해당 유형의 숫자 ​​상수의 기호 표현으로 간주되어 내부 표현으로 변환되고 결과 값이 변수에 할당됩니다. 숫자 표현의 필수 형식인 경우 상수, I/O 오류가 발생합니다. 선행 공백을 건너뛰는 동안 EOF 문자가 발생하면 변수 값이 0이 됩니다. Turbo Pascal은 16진수 상수를 제공하지 않습니다.

표준 INPUT 파일에 대해 READ 절차를 사용할 때, 즉 키보드에서 입력할 때 문자열은 버퍼에 저장되며 Enter 키를 누른 후에만 프로시저에 전달됩니다. 이를 통해 데이터를 입력할 때 데이터를 편집할 수 있습니다. 다음 키가 편집에 사용됩니다.

  • 백스페이스, Ctrl-H, 커서를 왼쪽으로 이동 - 커서 왼쪽의 문자 지우기
  • 커서를 오른쪽으로 이동 - 이전 입력 라인을 문자 단위로 복원합니다.
  • Ctrl-Z Enter - READ 절차로 입력을 완료합니다. 나머지 "추가" 문자 매개변수는 CHR(26)로 설정되고 문자열은 비어 있고 숫자 변수는 변경되지 않은 상태로 유지됩니다.

키보드 입력 버퍼의 최대 길이는 127자입니다. READ 절차를 사용한 키보드 입력은 PC 화면에 입력된 문자의 에코를 동반합니다.

READ 루틴은 숫자를 입력하는 데 유용합니다. 다음 정수 또는 실수를 입력하기 위해 액세스할 때 프로시저는 줄 끝 마커를 "점프"합니다. 사실, 전체 파일은 숫자의 텍스트 표현을 포함하는 하나의 긴 줄로 처리됩니다. EOF 함수를 사용한 파일 끝 검사와 함께 READ 프로시저를 사용하면 다음과 같이 데이터 배열의 간단한 wbd를 구성할 수 있습니다.

상수

N = 1000; (최대 입력 길이)

f: 텍스트;

m: 실수의 배열;

나: 정수;

시작하다

할당(f, "prog.dat");

재설정(£); 나는: = 1;

EOF가 아닌 동안 (f) 및 (i<= N) do

시작하다

읽기 (f, m [i]);

주식회사 (i)

끝;

닫기 (f);

.......

끝.

절차 READLN.

문자, 문자열 및 숫자에 대한 입력을 제공합니다. 이 절차는 마지막 변수를 읽은 후 EOLN 마커까지 줄의 나머지 부분을 건너뛰므로 다음 READLN 또는 READ 호출이 첫 번째 줄 바꿈 문자에서 시작된다는 점을 제외하고 READ 절차와 동일합니다. 또는 이 프로시저를 매개변수 없이 호출할 수 있습니다. (READ 절차 참조) 현재 줄의 모든 문자를 EOLN까지 건너뜁니다.

절차가 키보드에서 읽는 데 사용되는 경우 Enter 키를 누르면 화면에 CR + LF 시퀀스로 표시되고 커서는 다음 줄의 시작 부분에 배치됩니다. 반면 READ 절차에서는 Enter 키가 CR 문자와 함께 에코되고 커서는 현재 줄의 시작 부분에 위치합니다.

절차쓰다.

정보 출력을 텍스트 파일로 제공하거나 논리 장치로 전송합니다. 요청 형식:

쓰다 (<ф.п.>, <сп.вывода>) 또는 쓰기(<сп.вывода>)

여기<сп.вывода>- 출력 목록: 정수 또는 실수 유형뿐만 아니라 CHAR, STRING, BOOLEAN 유형의 하나 이상의 표현식 시퀀스.

파일 변수<ф.п.>, 지정된 경우 이전에 TEXT 유형의 변수로 설명되어야 하고 ASSIGN 프로시저에 의해 파일 이름 또는 논리 단위에 연결되어야 합니다. 파일 변수가 없으면 일반적으로 PC 화면과 관련된 표준 OUTPUT 파일로의 출력이 가정됩니다.

출력 목록의 모든 항목은 다음 형식일 수 있습니다.

OutExpr [: 최소폭 [: DecPlaces]]

여기서 OUTEXPR은 출력 표현식입니다.

MINWIDTH, DECPLACES - WORD 유형의 표현식(대괄호는 매개변수가 포함되지 않았음을 의미함).

MINWIDTH 하위 매개변수가 있는 경우 OUTEXPR 값의 문자 표현이 기록될 최소 필드 너비를 지정합니다. 문자 표현이 MINWIDTH보다 짧으면 공백으로 왼쪽이 채워지고, 더 길면 MINWIDTH 하위 매개변수가 무시되고 필요한 수의 문자가 출력됩니다.

DECPLACES 하위 매개변수는 실수의 소수 부분에서 소수 자릿수를 지정합니다. MINWIDTH와 함께 사용할 수 있으며 실제 유형 중 하나의 출력된 표현식에 대해서만 사용할 수 있습니다.

출력 필드의 너비를 지정하지 않으면 해당 매개변수가 구분 없이 이전 매개변수 다음에 출력됩니다.

문자와 행은 변경되지 않고 출력 파일에 전달되지만 출력 필드의 너비가 지정되고 이 너비가 출력에 필요한 것보다 큰 경우 선행 공백이 접두사로 붙습니다.

논리식을 표시할 때 값에 따라 TRUE 또는 FALSE 행이 표시됩니다. (부울 상수는 READ 또는 READLN으로 입력할 수 없습니다.)

DECPLACES 하위 매개변수가 지정되지 않으면 실수는 지수 형식으로 출력되고, 그렇지 않으면 고정 소수점 형식이 선택됩니다. 지수 형식은 형식의 실수를 나타냅니다.

S #. ############## E * ####,

어디:

우주;

s 공간은 양수이고 "-"는 음수입니다.

# 십진수;

E는 십진법 기호입니다.

* 숫자의 소수점 이하 자릿수에 따라 "+" 또는 "-" 기호를 사용합니다.

MINWIDTH 하위 매개변수가 생략되면 기본값(23)이 가정됩니다. MINWIDTH가 10보다 작으면 10으로 간주됩니다.

DECPLACES 하위 매개변수가 0이면 숫자의 소수 부분도 소수점도 출력되지 않습니다. DECPLACES가 음수이면 이 매개변수는 무시되고 숫자는 MINWIDTH를 포함한 지수 형식으로 출력됩니다. DECPLACES 값이 18보다 크면 값 18이 가정됩니다. DECPLACES 하위 매개변수를 지정할 때 실수는 항상 소수 부분에 필요한 자릿수와 함께 고정 소수점 형식으로 출력됩니다. MINWIDTH 하위 매개변수의 값이 정수 부분을 수용하기에 불충분한 것으로 판명되었습니다. 이 경우 MINWIDTH 값이 자동으로 증가합니다.

화면에 출력할 때 표시된 문자 시퀀스의 길이가 화면 또는 화면에 생성된 창의 너비를 초과하면 "추가" 문자가 다음 화면 라인으로 전송됩니다. 화면이나 창이 가득 차면 내용이 한 줄 위로 이동합니다.

WRITELN 절차. 이 절차는 출력 문자열이 CR 및 LF 코드로 종료된다는 점을 제외하고는 WRITE 절차와 완전히 동일합니다. WRITELN을 호출할 때 매개변수를 생략할 수 있습니다.<сп.вывода>: 이 경우 EOLN 마커가 파일에 전달되며 화면에 표시될 때 커서가 다음 줄의 시작 부분으로 이동합니다.

논리 함수 EOLN. 입력 텍스트 파일에서 줄 끝 마커에 도달하면 TRUE를 반환합니다. 요청 형식:

EOLN<ф.п.>

매개변수가<ф.п.>

EOLN 및 EOF가 디스크 파일 및 LUN에서 작동하는 방식에는 약간의 차이가 있습니다. 사실 논리적 장치가 다음 문자를 읽은 결과가 무엇인지 예측하는 것은 불가능합니다. 따라서 논리적 장치로 작업할 때 장치에서 읽은 마지막 문자가 EOLN 또는 EOF이면 EOLN 함수는 TRUE를 반환하고 디스크에서 읽을 때 다음 문자 읽기가 EOLN 또는 EOF이면 TRUE를 반환합니다. 유사한 차이점이 EOF 함수에서 관찰됩니다. 논리 장치의 경우 마지막 문자가 EOF이면 TRUE가 반환되고 디스크에서 읽을 때 - 다음 문자 읽기가 EOF이면 TRUE가 반환됩니다. 즉, 함수는 다음 읽기 후에 논리 장치에 대해 해당 기능을 테스트하고 읽기 전에 파일에 대해 해당 기능을 테스트합니다.

논리 함수 SEKEOLN.

EOLN 줄 끝 마커 또는 첫 번째 중요한 문자까지 모든 공백과 탭을 건너뛰고 마커가 발견되면 TRUE를 반환합니다. 요청 형식:

검색(<ф.п.>)

매개변수가<ф.п.>생략하면 함수는 표준 INPUT 파일을 확인합니다.

논리 함수검색하다.

파일 끝 마커 또는 첫 번째 유효 문자까지 모든 공백, 탭 및 EOLN 마커를 건너뛰고 마커가 발견되면 TRUE를 반환합니다. 요청 형식:

검색(<ф.п.>)

매개변수가<ф.п.>생략하면 함수는 표준 INPUT 파일을 확인합니다.

다음 예에서는 텍스트 파일로 작업을 설명하고 파일의 총 문자 수를 세고 결과를 40,000으로 나눕니다. 이런 식으로 소위 회계 및 출판 시트:

f: 텍스트;

s: 문자열;

상수

합계: LongInt = 0; (이것은 문자 수입니다)

시작하다

쓰기("파일 이름:"); (요청...)

Readln(들); (그리고 파일 이름을 입력하십시오.)

할당 (f, s);

리셋(f); (파일을 엽니다)

EOF(f)가 아닌 동안 (계산...)

시작하다 (숫자. . .)

ReadLn(f, s); (캐릭터 ...)

inc (합계, 길이(들)) (파일에)

끝;

닫기(f); (파일 닫기)

WriteLn("볼륨 =", 합계 / 40000: 6: 2, "계정")

끝.



관련 기사: