이 기사의 내용은 PHP 텍스트 작업 방법을 모아서 비교한 것입니다. 이제 모든 사람과 공유하고 도움이 필요한 친구들에게도 참고할 수 있습니다
fgets 및 fputs, fread 및 fwrite, fscanf 및 fprintf
문자열 읽기 및 쓰기 함수 fgets 및 fputs
1. 문자열 함수 읽기 fgets 함수의 기능은 지정된 파일에서 문자열을 문자 배열로 읽는 것입니다. 함수 호출은 fgets(문자 배열 이름, n)입니다. , 파일 포인터) 여기서 n은 양의 정수입니다. 파일에서 읽은 문자열이 n-1자를 초과하지 않음을 나타냅니다. 읽은 마지막 문자 뒤에 문자열 끝 표시 '를 추가합니다.이 예제 프로그램은 두 개의 구조 배열 boya 및 boyb와 두 개의 구조 포인터 변수 pp 및 qq를 나타내는 구조 stu를 정의합니다. pp는 boya를 가리키고, qq는 boyb를 가리킵니다. 프로그램의 16행에서는 두 개의 학생 데이터를 입력한 후 이진 파일 "stu_list"를 파일에 쓴 다음 파일의 내부 위치 포인터를 파일의 시작 부분으로 이동하고 두 개를 읽습니다. * 블록을 선택한 다음 화면에 표시합니다.
형식화된 읽기 및 쓰기 기능 fscanf 및 fprintf
fscanf 함수인 fprintf 함수는 이전에 사용된 scanf 및 printf 함수와 유사한 기능을 가지고 있으며 둘 다 형식화된 읽기 및 쓰기 기능입니다. 둘의 차이점은 fscanf 함수와 fprintf 함수의 읽기 및 쓰기 개체가 키보드와 모니터가 아니라 디스크 파일이라는 점입니다. 이 두 함수의 호출 형식은 다음과 같습니다: fscanf(파일 포인터, 형식 문자열, 입력 테이블 열); fprintf(파일 포인터, 형식 문자열, 출력 테이블 열) 예:
fscanf(fp,"%d%s " ,&i,s);
fprintf(fp,"%d%c",j,ch);
예제 10.6의 문제는 fscanf 및 fprintf 함수를 사용하여 완성할 수도 있습니다. 수정된 프로그램은 예제 10.7에 나와 있습니다.
[예제 10.7]
#include
struct stu
{
char name[10];
char addr[15]
}boya [2],*pp,*qq;
{
FILE *fp;
int i;
qq=boyb; ,"wb+"))==NULL)
{
printf("어떤 키로도 파일을 열 수 없습니다!")
getch()
exit(1)
printf("ninput datan"); for(i=0;iscanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp-> addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %sn",pp->name,pp->num ,pp->age,pp->
addr)
rewind(fp)
for(i=0;ifscanf(fp,"%s %d %d %sn ",qq->name,&qq->num,&qq->age,qq->addr);
printf("nnnametnumber age addrn");
qq=boyb;
for(i=0;i< ;2;i++,qq++)
printf("%st%5d %7d %sn",qq->name,qq->num, qq->age,
qq->addr)
fclose( fp);
예제 10.6과 비교하면 이 프로그램의 fscanf 및 fprintf 함수는 한 번에 하나의 구조 배열 요소만 읽고 쓸 수 있으므로 루프 문을 사용하여 모든 배열 요소를 읽고 씁니다. 또한 포인터 변수 pp와 qq는 루프로 인해 값이 변경되었으므로 프로그램의 25행과 32행에서 배열의 첫 번째 주소가 각각 재할당됩니다.
파일의 무작위 읽기 및 쓰기
앞서 소개한 파일의 읽기 및 쓰기 방법은 순차적 읽기 및 쓰기입니다. 즉, 파일 읽기 및 쓰기는 처음부터만 시작할 수 있으며, 각 데이터를 순차적으로 읽고 쓸 수 있습니다. 하지만 실제 문제에서는 파일의 특정 부분만 읽고 써야 하는 경우가 많습니다. 이 문제를 해결하기 위해서는 파일 내부의 위치 포인터를 읽고 써야 하는 위치로 이동시킨 후 읽고 쓰는 방식을 랜덤 읽기(random reading)와 쓰기(write)라고 합니다. 임의 읽기 및 쓰기를 수행하는 핵심은 필요에 따라 위치 포인터를 이동하는 것입니다. 이를 파일 위치 지정이라고 합니다. 파일의 내부 위치 포인터를 이동하기 위한 파일 위치 지정에는 두 가지 주요 기능, 즉 되감기 기능과 fseek 기능이 있습니다.
되감기 기능은 이전에 여러 번 사용되었습니다. 호출 형식은 다음과 같습니다. 되감기(파일 포인터) 해당 기능은 파일 내부의 위치 포인터를 파일의 시작 부분으로 이동하는 것입니다. 다음은
fseek 기능을 주로 소개합니다.
fseek 함수는 파일의 내부 위치 포인터를 이동하는 데 사용됩니다. 호출 형식은 다음과 같습니다. fseek(파일 포인터, 변위, 시작점) 여기서 "파일 포인터"는 이동된 파일을 가리킵니다. "변위"는 이동된 바이트 수를 나타내며, 변위는 파일 길이가 64KB보다 클 때 오류가 발생하지 않도록 긴 데이터이어야 합니다. 변위를 표현하기 위해 상수를 사용하는 경우 접미사 "L"이 필요합니다. "시작점"은 변위 계산을 시작할 위치를 나타냅니다. 지정된 시작점은 파일 시작, 현재 위치, 파일 끝입니다.
표현방법은 표 10.2와 같다.
시작점 int 파일 끝 SEEK—END 2
예:
fseek(fp,10 0L,0); 그 의미는 위치 포인터를 파일의 처음 100바이트로 이동하는 것입니다. 또한 fseek 함수는 일반적으로 바이너리 파일에 사용된다는 점에 유의해야 합니다. 텍스트 파일로의 변환이 필요하기 때문에 계산된 위치에서 오류가 자주 발생합니다. 위치 포인터를 이동한 후 이전에 소개한 읽기 및 쓰기 기능을 사용하여 파일을 무작위로 읽고 쓸 수 있습니다. 데이터 블록은 일반적으로 읽고 쓰기 때문에 fread 및 fwrite 함수가 일반적으로 사용됩니다. 다음 예는 파일의 무작위 읽기 및 쓰기를 설명하는 데 사용됩니다.
[예 10.8] 학생 파일 stu 목록에서 두 번째 학생의 데이터를 읽어옵니다.
#include
char name[10];
int num;
char addr[15]
}boy,*qq; FILE *fp;
int i=1;
qq=&boy;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("파일을 열 수 없습니다. 모든 키 종료!");
getch();
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0);
fread(qq,sizeof(struct stu),1,fp);
printf("nnnametnumber 나이 추가")
printf("%st%5d %7d %sn",qq->name,qq->num,qq->age,
qq->addr);
}
예제 10.6의 프로그램에 의해 stu_list 파일이 생성되었습니다. 이 프로그램은 무작위 읽기를 사용하여 두 번째 학생의 데이터를 읽습니다. 프로그램에서 boy는 stu 유형 변수로 정의되고, qq는 boy에 대한 포인터입니다. 이진 파일을 읽기 위해 파일이 열리고 프로그램의 22번째 줄이 파일 위치 포인터를 이동합니다. i 값이 1인데, 이는 파일 헤더에서 시작하여 하나의 Stu 유형의 길이를 이동한 후 데이터를 읽는 것이 두 번째 학생의 데이터임을 의미합니다.
파일 감지 기능
C 언어에서 일반적으로 사용되는 파일 감지 기능은 다음과 같습니다.
1. 파일 끝 감지 함수 feof 함수 호출 형식: feof(파일 포인터)
기능: 파일이 끝인지 확인합니다. 파일이 끝나면 반환 값은 1입니다. .
2. 파일 읽기 및 쓰기 오류 감지 기능 ferror 함수 호출 형식: ferror(파일 포인터)
기능: 다양한 입출력 기능을 사용하여 파일을 읽고 쓸 때 오류가 있는지 확인합니다. ferror 반환 값이 0이면 오류가 없음을 의미하고, 그렇지 않으면 오류가 있음을 의미합니다.
3. 파일 오류 플래그와 파일 끝 플래그를 0으로 설정합니다. 함수clearerr 함수 호출 형식:clearerr(파일 포인터)
함수: 이 함수는 오류 플래그와 파일 끝 플래그를 지우는 데 사용됩니다. 0.
C 라이브러리 파일
C 시스템은 라이브러리 파일이라는 풍부한 시스템 파일을 제공합니다. C 라이브러리 파일은 두 가지 범주로 구분됩니다. 하나는 헤더 파일이라는 확장자가 ".h"인 파일입니다. include 명령을 여러 번 실행했습니다. ".h" 파일에는 상수 정의, 유형 정의, 매크로 정의, 함수 프로토타입 및 다양한 컴파일 선택 설정과 같은 정보가 포함되어 있습니다. 다른 유형은 사용자가 프로그램에서 호출할 수 있는 다양한 함수의 대상 코드를 포함하는 함수 라이브러리입니다. 일반적으로 프로그램에서 라이브러리 함수를 호출할 때에는 함수의 프로토타입이 위치한 ".h" 파일을 호출 전에 포함시켜야 합니다.
모든 라이브러리 기능은 부록에 나와 있습니다.
ALLOC.H 메모리 관리 기능(할당, 해제 등)을 설명합니다.
ASSERT.H 정의는 디버깅 매크로를 주장합니다.说bios.h는 IBM -PC ROM Bios 서브루틴을 호출하는 각 기능을 설명합니다.
CONIO.H DOS 콘솔 I/O 서브루틴의 다양한 기능 호출에 대한 설명입니다.
CTYPE.H 문자 분류 및 변환에 대한 이름 유형 정보가 포함되어 있습니다(예: isalpha 및 toastcii 등).
DIR.H 디렉토리 및 경로와 관련된 구조, 매크로 정의 및 기능이 포함되어 있습니다.
DOS.H MSDOS 및 8086에서 호출되는 일부 상수 및 함수에 대한 정의 및 설명입니다.
ERRON.H 오류 코드의 니모닉을 정의합니다.
FCNTL.H 오픈 라이브러리 서브루틴에 연결될 때 기호 상수 정의.
FLOAT.H 부동소수점 연산과 관련된 일부 매개변수 및 함수가 포함되어 있습니다.
GRAPHICS.H는 그래픽 기능과 관련된 다양한 기능, 그래픽 오류 코드의 지속적인 정의, 다양한 드라이버에 대한 다양한 색상 값 및 기능에서 사용되는 일부 특수 구조를 설명합니다.
IO.H 저수준 I/O 서브루틴의 구조와 설명이 포함되어 있습니다.
LIMIT.H 환경 매개변수, 컴파일 시간 제한, 숫자 범위 등의 정보가 포함되어 있습니다.
MATH.H 수학 연산 기능을 설명하고, HUGE VAL 매크로도 정의하며, matherr 및 matherr 서브루틴에서 사용되는 특수 구조를 설명합니다.
MEM.H 일부 메모리 작업 기능을 설명합니다(대부분 STRING.H에도 설명되어 있음).
PROCESS.H 프로세스 관리의 다양한 기능, 스폰...의 구조 설명, EXEC... 기능에 대해 설명합니다.
SETJMP.H longjmp 및 setjmp 함수에서 사용하는 jmp buf 유형을 정의하고 이 두 함수를 설명합니다.
SHARE.H 파일 공유 기능의 매개변수를 정의합니다.
SIGNAL.H SIG[ZZ(Z] [ZZ)]IGN 및 SIG[ZZ(Z] [ZZ)]DFL 상수를 정의하여 rajse 및 signal 두 함수를 설명합니다.
STDARG.H 기능 매개변수 테이블을 읽기 위한 매크로를 정의합니다. (예: vprintf, vscarf 기능)
STDDEF.H 일부 공개 데이터 유형 및 매크로를 정의합니다.
STDIO.H Unix System V에서 Kernighan과 Ritchie가 정의한 표준 및 확장 유형과 매크로를 정의합니다. 또한 I/O 스트림 서브루틴을 설명하는 표준 I/O 사전 정의 스트림인 stdin, stdout 및 stderr을 정의합니다.
STDLIB.H 일반적으로 사용되는 일부 서브루틴(변환 서브루틴, 검색/정렬 서브루틴 등)에 대해 설명합니다.
STRING.H 일부 문자열 연산 및 메모리 연산 함수에 대해 설명합니다.
SYSSTAT.H 파일을 열고 생성할 때 사용되는 일부 기호 상수를 정의합니다.
SYSTYPES.H는 ftime 함수와 timeb 구조를 설명합니다.
SYSTIME.H 시간 유형[ZZ(Z] [ZZ)]t를 정의합니다.
TIME.H ctime, difftime, gmtime, localtime 및 stime에서 사용되는 유형인 asctime, localtime 및 gmtime 시간 변환 서브루틴의 구조를 정의하고 이러한 함수의 프로토타입을 제공합니다.
VALUE.H 부동 소수점 및 배정밀도 값 범위를 포함하여 시스템 하드웨어에 따라 달라지는 상수와 Unix System V와의 호환성을 위해 지정된 상수를 포함하여 몇 가지 중요한 상수를 정의합니다.
관련 추천 :
PHP 텍스트 조작 방법 모음 비교 페이지 1/2_PHP 튜토리얼
위 내용은 PHP 텍스트 연산 방법 모음 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!