내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
🌟🌟작가 홈페이지:덧없는 것__
🌟🌟소속 열:C 언어
우리는 프로그램을 작성할 때 데이터를 변수에 저장하는 경우가 많습니다. 프로그램이 종료되고 메모리가 회수되면 이러한 데이터는 손실됩니다. 그렇다면 프로그램을 다시 열 때 데이터가 계속 존재하도록 이 데이터를 지속적으로 저장할 수 있는 방법이 있습니까? 대답은 '예'입니다. 이를 수행할 수 있는 작업은 다음과 같습니다.파일 작업。
프로그램의 데이터는 외부 장치로 출력되어야 하고, 외부 장치로부터 입력도 필요합니다. 장치마다 입력 및 출력 방법이 다릅니다. 다양한 입력 및 출력 장치에 대한 작업을 용이하게 하기 위해 우리는 "스트림"이라는 매우 추상적인 개념을 가지고 있습니다. C 언어에서는 파일, 화면, 키보드 등의 입력 및 출력 작업이 모두 "스트림"을 통해 수행됩니다. 일반적으로 데이터를 쓰거나 읽으려면 스트림을 열어야 합니다.
C 언어 프로그램이 시작되면 기본값은 다음과 같습니다.세 개의 흐름이미 우리에게 공개되었습니다:
표준입력--표준 입력 스트림, 대부분의 경우 키보드에서 입력됩니다.
표준 출력--표준 출력 스트림, 대부분의 경우 모니터로 출력됩니다.
표준 에러--표준 오류 스트림, 대부분의 경우 모니터로 출력됩니다.
이 세 가지 스트림은 기본적으로 열려 있으므로 scanf, printf 등의 함수를 사용하여 입출력 작업을 직접 수행할 수 있습니다.
이 세 가지 스트림에도 유형이 있습니다.파일 포인터(FILE*) .파일 작업을 수행할 때 다음을 전달합니다.파일 포인터 변수는 연관된 파일을 간접적으로 찾을 수 있습니다.。
데이터가 어떻게 구성되어 있는지에 따라 데이터 파일이 호출됩니다.텍스트 파일또는바이너리 파일 . 데이터는 바이너리 형태로 메모리에 저장되며,변환하지 않고 외부저장 파일로 출력하는 경우에는바이너리 파일。
외부 저장소에 ASCII 코드로 저장해야 하는 경우에는 변환하여 저장해야 합니다.ASCII 문자 형식으로 저장된 파일은 다음과 같습니다.텍스트 파일。
데이터 조각이 파일에 어떻게 저장되나요?
문자는 항상 ASCII 형식으로 저장되며, 숫자 데이터는 ASCII 또는 이진 형식으로 저장될 수 있습니다. 예를 들어 정수 10000이 있을 경우 ASCII 코드 형식으로 디스크에 출력하면 디스크에서 5바이트(문자당 1바이트)를 차지하게 되고, 바이너리 형식으로 출력하면 디스크에서 5바이트(문자당 1바이트)를 차지하게 됩니다. 디스크에서 4바이트만 차지합니다.
이 전제 조건 지식을 이해한 후 파일 열기 및 파일 닫기에 대한 요점을 살펴보겠습니다. C 언어는 각각 파일 열기 및 닫기를 담당하는 두 가지 기능을 제공합니다. 프로토타입은 다음과 같습니다.
파일을 엽니다:파일 * 포펜 ( const char * 파일 이름, const char * 모드 );
파일을 닫습니다.정수 닫기 ( 파일 * 스트림 );
fopen 함수에는 두 개의 매개변수가 있습니다.첫 번째 매개변수는 문자열 형식으로 표현됩니다.파일 이름, 두 번째 매개변수는 파일입니다.개방형 방식, 문자열로 표현됨 .이 기능을 사용하려면파일 포인터 변수 수신하려면 파일 열기에 실패하면 널 포인터가 반환됩니다. 개통 방법은 다음과 같습니다.
개방형 방식 | 의미 | 지정한 파일이 존재하지 않는 경우 |
"r"(읽기 전용) |
데이터를 입력하려면 기존 텍스트 파일을 엽니다.
| 널 포인터를 반환합니다. |
"w"(쓰기 전용) |
데이터를 출력하려면 텍스트 파일을 엽니다.
| 새 파일 만들기 |
"a"(추가) | 텍스트 파일 끝에 데이터 추가 | 새 파일 만들기 |
"rb"(읽기 전용) | 데이터를 입력하려면 바이너리 파일을 엽니다. | 널 포인터를 반환합니다. |
"wb"(쓰기 전용) | 데이터를 출력하려면 바이너리 파일을 엽니다. | 새 파일 만들기 |
"ab"(추가) | 바이너리 파일 끝에 데이터 추가 | 새 파일 만들기 |
"r+"(읽기 및 쓰기) | 읽고 쓰려면 텍스트 파일을 엽니다. | 널 포인터를 반환합니다. |
"w+"(읽기 및 쓰기) | 읽고 쓰기 위해 새 텍스트 파일을 만듭니다. | 새 파일 만들기 |
"a+"(읽기 및 쓰기) | 파일을 열고 파일 끝에서 읽고 쓰기 | 새 파일 만들기 |
"rb+"(읽기 및 쓰기) | 읽고 쓰기 위해 바이너리 파일 열기 | 널 포인터를 반환합니다. |
"wb+"(읽기 및 쓰기)
| 읽고 쓰기 위해 새 바이너리 파일을 만듭니다. | 새 파일 만들기 |
"ab+"(읽기 및 쓰기)
| 바이너리 파일을 열고 파일 끝에서 읽고 씁니다. | 새 파일 만들기 |
fclose 함수의 경우 해당 매개변수는 파일 포인터로, 파일 포인터가 가리키는 파일을 닫는 데 사용됩니다.
다음으로 파일을 열고 닫으려고 합니다.
- #include <stdio.h>
-
- int main()
- {
- FILE* pf = fopen("test.txt", "w");
- if (pf == NULL)//文件打开失败则退出程序
- {
- perror("fopen");
- return 0;
- }
- printf("文件打开成功n");
- fclose(pf);
- pf = NULL;//避免出现野指针,及时制空
- return 0;
- }
여는 방법이 "w"이므로 경로에 "test.txt"라는 파일이 나타나는 것을 알 수 있다.
다음으로, 다양한 기능을 소개합니다.파일에 데이터 읽기 또는 쓰기。
기능 이름 | 기능 | 적용 대상 |
fgetc | 문자 입력 기능 | 모든 입력 스트림 |
fputc | 문자 출력 기능 | 모든 출력 스트림 |
얻는다 | 텍스트 라인 입력 기능 | 모든 입력 스트림 |
fputs | 텍스트 라인 출력 기능 | 모든 출력 스트림 |
에프스캔프 | 포맷 입력 기능 | 모든 입력 스트림 |
fprintf | 포맷 출력 기능 | 모든 출력 스트림 |
프리드 | 바이너리 입력 | 파일 입력 스트림 |
쓰기 | 바이너리 출력 | 파일 출력 스트림 |
다음으로 우리는에프스캔프그리고fprintf기능:
이 두 함수의 첫 번째 매개변수는 파일 데이터를 읽고 쓰는 데 사용되는 파일 포인터입니다. 후속 매개변수는 scanf 및 printf 함수와 동일합니다.
- #include <stdio.h>
-
- int main()
- {
- FILE* pf = fopen("test.txt", "w");//要写入数据,以写的形式打开文件
- if (pf == NULL)
- {
- perror("fopen");
- return 0;
- }
- fprintf(pf, "123456");//向文件中写入数据
- fclose(pf);
- pf = NULL;
- return 0;
- }
보시다시피 데이터가 파일에 기록되었습니다. 다음으로 fscanf 함수를 사용하여 파일 데이터를 화면에 인쇄합니다.
- #include <stdio.h>
-
- int main()
- {
- char str[20] = { 0 };
- FILE* pf = fopen("test.txt", "r");//要读取数据,以读的形式打开文件
- if (pf == NULL)
- {
- perror("fopen");
- return 0;
- }
- fscanf(pf, "%s", str);//读取数据到str当中
- printf(str);
- fclose(pf);
- pf = NULL;
- return 0;
- }
fseek 함수의 기능은 다음과 같습니다.파일 포인터의 위치와 오프셋을 기준으로위치파일 포인터 . 그 프로토타입은 다음과 같습니다:
int fseek(FILE *stream, long int offset, int origin);
첫 번째 매개변수는 파일 포인터이고, 두 번째 매개변수는 설정 위치에 대한 오프셋, 세 번째 매개변수는 설정 위치입니다.
C 언어는 세 가지를 정의합니다.매크로, 세 번째 매개변수로 그 중 하나를 선택할 수 있습니다.
SEEK_SET: 파일의 시작 위치
SEEK_CUR: 파일 포인터의 현재 위치
SEEK_END: 파일 끝
파일 포인터를 찾은 후 파일의 지정된 위치에서 읽거나 쓸 수 있습니다.
ftell 함수는 반환하는 데 사용됩니다.시작 위치를 기준으로 한 파일 포인터의 오프셋 . 기능 프로토타입:
long int ftell(FILE *stream);
되감기 기능은 다음 용도로 사용됩니다.파일 포인터의 위치를 파일의 시작 부분으로 되돌립니다. . 기능 프로토타입:
void 되감기(FILE *스트림);
1.텍스트 파일, 먼저 사용할 수 있습니다fgetc이 함수는 EOF를 읽을 때까지 파일의 문자를 반복하여 다음을 나타냅니다.파일 읽기가 종료됩니다。
2.바이너리 파일,우리는 사용프리드함수는 반환 값을 결정합니다.실제 읽어야 할 숫자보다 적나요? .미만인 경우읽기가 종료됩니다.
위의 두 가지 경우에 대해 파일독서가 끝나면, 우리는 계속해서 판단할 수 있습니다파일 읽기가 종료된 이유 . 두 가지 기능을 소개합니다:페오프그리고페레르。
페오프사용되는 기능파일 읽기의 끝을 확인이유여부파일 끝이 발견되었습니다. . 그 프로토타입은 다음과 같습니다:
int feof(FILE*stream);
파일이 원인인 경우파일 끝까지 읽기읽기가 완료되면 EOF가 반환되고, 다른 경우에는 0이 반환됩니다.
페레르사용되는 기능파일 읽기의 끝을 확인이유여부I/O 오류가 발생했습니다. . 프로토타입은 다음과 같습니다.
int ferror(FILE *stream);
파일이 원인인 경우I/O 오류가 발생했습니다.읽기가 완료되면 0이 아닌 값이 반환되고, 다른 경우에는 0이 반환됩니다.
다음으로 파일 읽기의 끝을 판단하는 코드를 작성해 보겠습니다.
- #include <stdio.h>
-
- int main()
- {
- int c = 0;
- FILE* fp = fopen("test.txt", "r");
- if (fp == NULL)
- {
- perror("fopen");
- return 0;
- }
- while ((c = fgetc(fp)) != EOF)//返回EOF则读取结束
- {
- putchar(c);
- }
- //判断读取结束的原因
- if (ferror(fp))
- puts("I/O错误n");
- else if (feof(fp))
- puts("文件读取结束n");
- fclose(fp);
- fp = NULL;
- return 0;
- }
오늘 우리는 파일 작업, 파일 열기 및 닫기, 파일에서 데이터 쓰기 또는 읽기 방법, 파일 포인터 조정 기능, 파일 읽기 종료 결정 방법에 대해 배웠습니다. 블로거님 말씀이 좋다고 생각하시면 작은 좋아요도 남겨주시고 많은 응원 부탁드립니다❤❤❤