C 언어
이 튜토리얼에서는 C에서 파일 처리에 대해 배울 것입니다. 다음을 통해 fprintf(), fscanf(), fread(), fwrite(), fseek() 등을 사용하여 C에서 표준 I/O를 처리하는 방법을 배웁니다. 예.
파일은 데이터를 저장하는 데 사용되는 컴퓨터 저장 장치의 컨테이너입니다.
<시간>파일을 다룰 때 알아야 할 두 가지 유형의 파일이 있습니다.
텍스트 파일은 일반 .txt입니다. 파일. 메모장과 같은 간단한 텍스트 편집기를 사용하여 텍스트 파일을 쉽게 만들 수 있습니다.
해당 파일을 열면 파일 내의 모든 내용이 일반 텍스트로 표시됩니다. 내용을 쉽게 수정하거나 삭제할 수 있습니다.
유지 관리에 최소한의 노력이 필요하고 쉽게 읽을 수 있으며 최소한의 보안을 제공하고 더 큰 저장 공간을 차지합니다.
바이너리 파일은 대부분 .bin입니다. 컴퓨터에 있는 파일.
데이터를 일반 텍스트로 저장하는 대신 이진 형식(0과 1)으로 저장합니다.
그들은 더 많은 양의 데이터를 보유할 수 있고 쉽게 읽을 수 없으며 텍스트 파일보다 더 나은 보안을 제공합니다.
<시간>C에서는 텍스트 또는 이진 파일에 대해 네 가지 주요 작업을 수행할 수 있습니다.
파일로 작업할 때 파일 형식의 포인터를 선언해야 합니다. 이 선언은 파일과 프로그램 간의 통신에 필요합니다.
FILE *fptr;
<시간>
파일 열기는 fopen()
를 사용하여 수행됩니다. stdio.h
에 정의된 함수 헤더 파일.
표준 I/O에서 파일을 여는 구문은 다음과 같습니다.
ptr = fopen("fileopen","mode");
예를 들어,
fopen("E:\\cprogram\\newprogram.txt","w");
fopen("E:\\cprogram\\oldprogram.bin","rb");
newprogram.txt
파일을 가정해 보겠습니다. E:\cprogram
위치에 존재하지 않습니다. . 첫 번째 함수는 newprogram.txt
이라는 새 파일을 만듭니다. 'w' 모드에 따라 쓰기 위해 엽니다. . oldprogram.bin
E:\cprogram
위치에 존재 . 두 번째 함수는 바이너리 모드 'rb'에서 읽기 위해 기존 파일을 엽니다. . 모드 | 모드의 의미 | 파일이 없는 동안 |
---|---|---|
r | 읽을 수 있도록 엽니다. | 파일이 존재하지 않으면 fopen() NULL을 반환합니다. |
rb | 바이너리 모드에서 읽기 위해 엽니다. | 파일이 존재하지 않는 경우 fopen() NULL을 반환합니다. |
w | 작성용으로 엽니다. | 파일이 존재하면 그 내용을 덮어씁니다. 파일이 없으면 생성됩니다. |
wb | 바이너리 모드에서 쓰기 위해 엽니다. | 파일이 존재하면 그 내용을 덮어씁니다. 파일이 없으면 생성됩니다. |
a | 추가를 위해 엽니다. 데이터는 파일 끝에 추가됩니다. | 파일이 없으면 생성됩니다. |
ab | 이진 모드에서 추가를 위해 엽니다. 데이터는 파일 끝에 추가됩니다. | 파일이 없으면 생성됩니다. |
r+ | 읽기와 쓰기 모두 가능합니다. | 파일이 없으면 fopen() NULL을 반환합니다. |
rb+ | 바이너리 모드에서 읽기와 쓰기 모두 가능합니다. | 파일이 없으면 fopen() NULL을 반환합니다. |
w+ | 읽기와 쓰기 모두 가능합니다. | 파일이 존재하면 그 내용을 덮어씁니다. 파일이 없으면 생성됩니다. |
wb+ | 바이너리 모드에서 읽기와 쓰기 모두 가능합니다. | 파일이 존재하면 그 내용을 덮어씁니다. 파일이 없으면 생성됩니다. |
a+ | 읽기 및 추가할 수 있습니다. | 파일이 없으면 생성됩니다. |
ab+ | 바이너리 모드에서 읽기 및 추가를 위해 엽니다. | 파일이 없으면 생성됩니다. |
파일(텍스트 및 바이너리 모두)은 읽기/쓰기 후에 닫아야 합니다.
파일 닫기는 fclose()
을 사용하여 수행됩니다. 기능.
fclose(fptr);
여기 fptr
닫을 파일과 관련된 파일 포인터입니다.
텍스트 파일을 읽고 쓰기 위해 fprintf()
함수를 사용합니다. 및 fscanf().
printf()
의 파일 버전일 뿐입니다. 및 scanf()
. 유일한 차이점은 fprintf()
및 fscanf()
FILE 구조에 대한 포인터가 필요합니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
// use appropriate location if you are using MacOS or Linux
fptr = fopen("C:\\program.txt","w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("Enter num: ");
scanf("%d",&num);
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}
이 프로그램은 사용자로부터 번호를 받아 program.txt
파일에 저장합니다. .
이 프로그램을 컴파일하고 실행하면 텍스트 파일 program.txt
을 볼 수 있습니다. 컴퓨터의 C 드라이브에 생성됩니다. 파일을 열면 입력한 정수를 볼 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
if ((fptr = fopen("C:\\program.txt","r")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
fscanf(fptr,"%d", &num);
printf("Value of n=%d", num);
fclose(fptr);
return 0;
}
이 프로그램은 program.txt
에 있는 정수를 읽습니다. 파일을 생성하여 화면에 출력합니다.
예 1에서 파일을 성공적으로 만든 경우 , 이 프로그램을 실행하면 입력한 정수를 얻을 수 있습니다.
fgetchar()
와 같은 기타 기능 , fputc()
등도 비슷한 방식으로 사용할 수 있습니다.
함수 fread()
및 fwrite()
바이너리 파일의 경우 각각 디스크의 파일을 읽고 쓰는 데 사용됩니다.
바이너리 파일에 쓰려면 fwrite()
을 사용해야 합니다. 기능. 함수는 4개의 인수를 사용합니다.
fwrite(addressData, sizeData, numbersData, pointerToFile);
<시간>
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","wb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
for(n = 1; n < 5; ++n)
{
num.n1 = n;
num.n2 = 5*n;
num.n3 = 5*n + 1;
fwrite(&num, sizeof(struct threeNum), 1, fptr);
}
fclose(fptr);
return 0;
}
이 프로그램에서 새 파일 program.bin
을 만듭니다. C 드라이브에 있습니다.
threeNum
구조를 선언합니다. 세 개의 숫자 - n1, n2 및 n3 , 메인 함수에서 num으로 정의합니다.
이제 for 루프 내에서 fwrite()
을 사용하여 파일에 값을 저장합니다. .
첫 번째 매개변수는 num의 주소를 사용합니다. 두 번째 매개변수는 threeNum
구조의 크기를 사용합니다. .
num 인스턴스를 하나만 삽입하기 때문에 , 세 번째 매개변수는 1
입니다. . 그리고 마지막 매개변수 *fptr
데이터를 저장하고 있는 파일을 가리킵니다.
마지막으로 파일을 닫습니다.
<시간>
기능 fread()
또한 fwrite()
와 유사한 4개의 인수를 사용합니다. 위와 같은 기능을 합니다.
fread(addressData, sizeData, numbersData, pointerToFile);
<시간>
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","rb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
for(n = 1; n < 5; ++n)
{
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
}
fclose(fptr);
return 0;
}
이 프로그램에서 동일한 파일 program.bin
를 읽습니다. 레코드를 하나씩 반복합니다.
간단히 말해서 하나의 threeNum
을 읽습니다. threeNum
기록 *fptr이 가리키는 파일의 크기 num 구조로 .
예시 3에 삽입한 것과 동일한 레코드를 얻게 됩니다. .
<시간>파일 내부에 많은 레코드가 있고 특정 위치의 레코드에 액세스해야 하는 경우 레코드를 가져오기 위해 이전의 모든 레코드를 반복해야 합니다.
이것은 많은 메모리와 작업 시간을 낭비하게 됩니다. fseek()
를 사용하여 필요한 데이터에 더 쉽게 접근할 수 있습니다. .
이름에서 알 수 있듯이 fseek()
파일에서 주어진 레코드로 커서를 찾습니다.
fseek(FILE * stream, long int offset, int whence);
첫 번째 매개변수 스트림은 파일에 대한 포인터입니다. 두 번째 매개변수는 찾을 레코드의 위치이고 세 번째 매개변수는 오프셋이 시작되는 위치를 지정합니다.
언제 | 의미 |
---|---|
SEEK_SET | 파일의 시작 부분에서 오프셋을 시작합니다. |
SEEK_END | 파일 끝에서 오프셋을 시작합니다. |
SEEK_CUR | 파일에서 커서의 현재 위치에서 오프셋을 시작합니다. |
#include <stdio.h>
#include <stdlib.h>
struct threeNum
{
int n1, n2, n3;
};
int main()
{
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\program.bin","rb")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
// Moves the cursor to the end of the file
fseek(fptr, -sizeof(struct threeNum), SEEK_END);
for(n = 1; n < 5; ++n)
{
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
fseek(fptr, -2*sizeof(struct threeNum), SEEK_CUR);
}
fclose(fptr);
return 0;
}
이 프로그램은 program.bin
파일에서 레코드 읽기를 시작합니다. 역순으로(마지막에서 먼저) 인쇄합니다.
C 언어
학생으로서 다른 PCB 파일을 처리하는 방법을 모르는 경우가 많습니다. 엔지니어나 디자이너는 인쇄 회로 기판(PCB)을 대량 생산해야 할 수도 있습니다. 그렇다면 Eagle이 Gerber로 어떻게 변환되는지 궁금하시다면? 또는 .PCB를 EAGLE.sch 또는 .BRD 파일, GBR 파일로 변환하는 방법은 무엇입니까? 이 기사는 당신을 위한 것입니다. 우리는 이러한 질문과 훨씬 더 많은 것에 답할 것입니다. 이 과정에서 발생할 수 있는 모든 문제에 대해 알게 됩니다. 또한 허용되는 문서 유형도 이해하게 됩니다. 계속 지켜봐 주세
오토바이용 부품을 제조하든 철근 결속 로봇을 제조하든 CAD(Computer-Aided Design) 파일로 시작해야 합니다. 이러한 디지털 파일에는 제품 팀이 최종 제품을 정확하게 계획, 시각화 및 제조하는 데 도움이 되는 3D 디자인 및 기타 재료, 질감 및 공차 데이터가 포함되어 있습니다. CAD 모델을 내보낼 때는 다양한 옵션이 있지만 다양한 사용 사례에 가장 적합한 파일 형식이 다릅니다. STEP 파일 형식, 사용 방법, 장단점을 살펴보고 STEP 파일 형식이 프로젝트에 가장 적합한지 여부를 결정할 수 있습니다. STEP