백엔드 개발 C#.Net 튜토리얼 C 언어에서 파일 읽기 및 쓰기 작업은 무엇입니까?

C 언어에서 파일 읽기 및 쓰기 작업은 무엇입니까?

Jul 27, 2020 pm 01:44 PM
c 언어

C 언어 파일 읽기 및 쓰기 작업에는 다음이 포함됩니다. 1. 파일에서 문자를 읽고 쓰는 함수, 코드는 [int fgetc(FILE *stream)] 2. 파일에서 문자열을 읽고 쓰는 함수, 코드는 [int fputs(char *string,FILE *stream)]입니다.

C 언어에서 파일 읽기 및 쓰기 작업은 무엇입니까?

C 언어 파일 읽기 및 쓰기 작업에는 다음이 포함됩니다.

1 파일 열기 함수 fopen()

파일 열기 작업은 FILE 구조 영역이 파일에 할당된다는 의미입니다. 사용자가 지정한 구조체의 포인터는 나중에 사용자 프로그램에 반환됩니다. 이 FILE 포인터를 사용하여 지정된 파일에 액세스할 수 있습니다. 열기 기능 사용 시 파일명과 파일 동작 모드(읽기, 쓰기, 읽기-쓰기)를 반드시 주셔야 합니다.

파일 이름이 없으면 생성을 뜻합니다. (파일 쓰기만 하면 읽기 시 오류가 발생합니다.) files) ) 파일 포인터가 파일의 시작 부분을 가리킵니다. 동일한 이름의 파일이 이미 존재하는 경우 해당 파일을 삭제합니다. 동일한 이름의 파일이 없으면 파일을 생성하고 파일 포인터를 파일의 시작 부분을 가리킵니다.

fopen(char *filename,char *type);
로그인 후 복사

여기서 *filename은 열려는 파일의 파일 이름 포인터이며, 일반적으로 큰따옴표로 묶인 파일 이름 또는 이중 백슬래시로 구분된 경로 이름으로 표시됩니다. *type 매개변수는 파일을 여는 작업 방법을 나타냅니다. 사용 가능한 작업 방법은 다음과 같습니다: *filename是要打开文件的文件名指针,一般用双引号括起来的文件名表示,也可使用双反斜杠隔开的路径名。而*type参数表示了对打开文件的操作方式。其可采用的操作方式如下:

  • 含义 "r" 打开,只读;

  • "w" 打开,文件指针指到头,只写;

  • "a" 打开,指向文件尾,在已存在文件中追加;

  • "rb" 打开一个二进制文件,只读;

  • "wb" 打开一个二进制文件,只写;

  • "ab" 打开一个二进制文件,进行追加 ;

  • "r+" 以读/写方式打开一个已存在的文件;

  • "w+" 以读/写方式建立一个新的文本文件 ;

  • "a+" 以读/写方式打开一个文件文件进行追加 ;

  • "rb+" 以读/写方式打开一个二进制文件;

  • "wb+" 以读/写方式建立一个新的二进制文件 ;

  • "ab+" 以读/写方式打开一个二进制文件进行追加 ;

当用fopen()成功的打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,将返回一个NULL指针。

2.关闭文件函数fclose()

文件操作完成后,必须要用fclose()函数进行关闭,这是因为对打开的文件进行写入时,若文件缓冲区的空间未被写入的内容填满,这些内容不会写到打开的文件中去而丢失。只有对打开的文件进行关闭操作时,停留在文件缓冲区的内容才能写到该文件中去,从而使文件完整。

再者一旦关闭了文件,该文件对应的FILE结构将被释放,从而使关闭的文件得到保护,因为这时对该文件的存取操作将不会进行。文件的关闭也意味着释放了该文件的缓冲区。

int fclose(FILE *stream);
로그인 후 복사

它表示该函数将关闭FILE指针对应的文件,并返回一个整数值。若成功地关闭了文件,则返回一个0值,否则返回一个非0值。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;   //  头文件#include <stdio.h>
    if((fp=fopen("123.txt","w"))==NULL)
    {
        printf("file cannot open \n");
        //exit(0);  头文件#include <stdlib.h>
        //exit结束程序,一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。
    }
    else
        printf("file opened for writing \n");
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}
로그인 후 복사

3.文件的读写

(1).读写文件中字符的函数(一次只读写文件中的一个字符):

int fgetc(FILE *stream);
int getchar(void);
int fputc(int ch,FILE *stream);
int putchar(int ch);
int getc(FILE *stream);
int putc(int ch,FILE *stream);
로그인 후 복사

fgetc()函数将把由流指针指向的文件中的一个字符读出,例如: ch=fgetc(fp); 将把流指针fp指向的文件中的一个字符读出,并赋给ch,当执行fgetc()函数时,若当时文件指针指到文件尾,即遇到文件结束标志EOF(其对应值为-1),该函数返回一个-1给ch,在程序中常用检查该函数返回值是否为-1来判断是否已读到文件尾,从而决定是否继续。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("123.txt","r"))==NULL)
        printf("file cannot open \n");
    else
        printf("file opened for writing \n");
    while((ch=fgetc(fp))!=EOF)
        fputc(ch,stdout); //这里是输出到屏幕
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}
로그인 후 복사

该程序以只读方式打开123.txt文件,在执行while循环时,文件指针每循环一次后移一个字符位置。用fgetc()函数将文件指针指定的字符读到ch变量中,然后用fputc()函数在屏幕上显示,当读到文件结束标志EOF时,关闭该文件。 上面的程序用到了fputc()函数,该函数将字符变量ch的值写到流指针指定的文件中去,由于流指针用的是标准输出(显示器)的FILE指针stdout,故读出的字符将在显示器上显示。又比如: fputc(ch,fp); 该函数执行结构,将把ch表示的字符送到流指针fp指向的文件中去。

在TC中,putc()等价于fputc(),getc()等价于fgetc()。 putchar(c)相当于fputc(c,stdout);getchar()相当于fgetc(stdin)。 注意,这里使用char ch,其实是不科学的,因为最后判断结束标志时,是看ch!=EOF,而EOF的值为-1,这显然和char是不能比较的。所以,某些使用,我们都定义成int ch

  • 의미 "r"은 읽기 전용입니다.

  • "w" opens , 파일 포인터는 시작 부분을 가리키고 쓰기만 합니다. 🎜
  • 🎜 "a"는 파일의 끝을 가리키고 기존 파일에 추가됩니다. "rb"는 바이너리 파일을 읽기 전용으로 엽니다. 🎜
  • 🎜 "wb"는 쓰기 전용으로 바이너리 파일을 엽니다. 🎜
  • 🎜 "ab"는 추가용으로 바이너리 파일을 엽니다. ; 🎜
  • < li>🎜"r+" 읽기/쓰기 모드로 기존 파일 열기 🎜
  • 🎜"w+" 읽기/쓰기 모드로 새 텍스트 파일 만들기; >
  • 🎜"a+" 추가를 위해 읽기/쓰기 모드로 파일 열기 🎜
  • 🎜"rb+" 읽기/쓰기 모드로 바이너리 파일 열기 🎜
  • 🎜 "wb+" 읽기/쓰기 모드에서 새 바이너리 파일을 생성합니다. 🎜
  • 🎜"ab+" 추가를 위해 읽기/쓰기 모드에서 바이너리 파일을 엽니다. 🎜
🎜 fopen( ) 파일이 성공적으로 열렸을 때 이 함수는 FILE 포인터를 반환합니다. 파일을 열지 못하면 NULL 포인터가 반환됩니다. 🎜🎜🎜2. 파일 닫기 함수 fclose() 🎜🎜🎜파일 작업이 완료된 후 fclose() 함수를 사용하여 파일을 닫아야 합니다. 버퍼가 기록되지 않았습니다. 입력 내용이 채워지고 해당 내용이 열린 파일에 기록되지 않고 손실됩니다. 열린 파일을 닫아야 파일 버퍼에 남아 있는 내용을 파일에 쓸 수 있어 파일이 완성된다. 🎜🎜또한, 파일이 닫히면 해당 파일에 해당하는 FILE 구조가 해제되어 닫힌 파일을 보호합니다. 이때 파일에 대한 접근 작업이 수행되지 않기 때문입니다. 파일을 닫는다는 것은 파일의 버퍼를 해제하는 것을 의미하기도 합니다. 🎜
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;
    if((fp=fopen("123.txt","a"))==NULL)
        printf("file cannot open \n");
    else
        printf("file opened for writing \n");
    char ch=&#39;e&#39;;
    fputc(ch,fp); //输入到文件中
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}
로그인 후 복사
🎜이 함수는 FILE 포인터에 해당하는 파일을 닫고 정수 값을 반환한다는 의미입니다. 파일이 성공적으로 닫혔으면 0 값이 반환되고, 그렇지 않으면 0이 아닌 값이 반환됩니다. 🎜
char *fgets(char *string,int n,FILE *stream);
char *gets(char *s);
int fprintf(FILE *stream,char *format,variable-list);
int fputs(char *string,FILE *stream);
char *puts(char *s);
int fscanf(FILE *stream,char *format,variable-list);
로그인 후 복사
로그인 후 복사
🎜🎜3. 파일 읽기 및 쓰기🎜🎜🎜(1). 파일에서 문자를 읽고 쓰는 기능(한 번에 파일에서 한 문자만 읽고 쓰기): 🎜
#include "stdio.h" 
int main() {
    FILE *fp; 
    char str[128]; 
    if((fp=fopen("123.txt","r"))==NULL) {
        printf("cannot open file/n"); exit(1);
    } 
    while(!feof(fp)) {
        if(fgets(str,128,fp)!=NULL)
        printf("%s",str);
    }
    fclose(fp);
}
로그인 후 복사
로그인 후 복사
🎜fgetc() 함수 스트림 포인터가 가리키는 파일의 문자를 읽어냅니다. 예: ch=fgetc(fp); 스트림 포인터 fp가 가리키는 파일의 문자를 읽어서 ch에 할당합니다. fgetc() 함수가 실행될 때 파일 포인터가 파일의 끝을 가리키는 경우, 즉 파일 끝 플래그 EOF(해당 값은 -1)를 만나면 함수는 -1을 반환합니다. to ch. 이 함수의 반환 값이 -1인지 확인하기 위해 프로그램에서 자주 사용됩니다. 파일의 끝에 도달했는지 확인하고 계속할지 여부를 결정합니다. 🎜rrreee🎜이 프로그램은 123.txt 파일을 읽기 전용 모드로 엽니다. while 루프를 실행할 때 파일 포인터는 루프할 때마다 한 문자 위치 뒤로 이동합니다. fgetc() 함수를 사용하여 파일 포인터에 지정된 문자를 ch 변수로 읽어온 다음 fputc() 함수를 사용하여 파일 끝 표시 EOF를 읽으면 파일이 표시됩니다. 닫은. 위 프로그램은 스트림 포인터가 지정한 파일에 문자 변수 ch의 값을 쓰는 fputc() 함수를 사용합니다. 스트림 포인터는 표준 출력(디스플레이)의 FILE 포인터 stdout을 사용하므로 읽은 문자가 표시됩니다. 모니터에. 또 다른 예: fputc(ch,fp); 이 함수는 구조를 실행하고 ch가 나타내는 문자를 스트림 포인터 fp가 가리키는 파일로 보냅니다. 🎜🎜TC에서 putc()는 fputc()와 동일하고, getc()는 fgetc()와 동일합니다. putchar(c)는 fputc(c,stdout)와 동일하며, getchar()는 fgetc(stdin)과 동일합니다. 여기에서 char ch를 사용하는 것은 실제로 비과학적입니다. 왜냐하면 끝 표시가 최종적으로 판단될 때 ch!=EOF가 확인되고 EOF의 값이 -1이므로 char와 분명히 비교할 수 없기 때문입니다. 따라서 일부 용도에서는 int ch로 정의합니다. 🎜rrreee🎜(2). 파일에서 문자열을 읽고 쓰는 기능🎜
char *fgets(char *string,int n,FILE *stream);
char *gets(char *s);
int fprintf(FILE *stream,char *format,variable-list);
int fputs(char *string,FILE *stream);
char *puts(char *s);
int fscanf(FILE *stream,char *format,variable-list);
로그인 후 복사
로그인 후 복사

其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针string指向的字符数组中去,例如: fgets(buffer,9,fp); 将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。

注意,fgets()函数读到'/n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'/0'。 fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,

检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);

例:if(feof(fp))printf("已到文件尾");

原型是int ferror(FILE *stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);

例:printf("%d",ferror(fp));

例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:

#include "stdio.h" 
int main() {
    FILE *fp; 
    char str[128]; 
    if((fp=fopen("123.txt","r"))==NULL) {
        printf("cannot open file/n"); exit(1);
    } 
    while(!feof(fp)) {
        if(fgets(str,128,fp)!=NULL)
        printf("%s",str);
    }
    fclose(fp);
}
로그인 후 복사
로그인 후 복사

相关学习推荐:C视频教程

위 내용은 C 언어에서 파일 읽기 및 쓰기 작업은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C 언어 데이터 구조 : 나무 및 그래프의 데이터 표현 및 작동 C 언어 데이터 구조 : 나무 및 그래프의 데이터 표현 및 작동 Apr 04, 2025 am 11:18 AM

C 언어 데이터 구조 : 트리 및 그래프의 데이터 표현은 노드로 구성된 계층 적 데이터 구조입니다. 각 노드에는 데이터 요소와 하위 노드에 대한 포인터가 포함되어 있습니다. 이진 트리는 특별한 유형의 트리입니다. 각 노드에는 최대 두 개의 자식 노드가 있습니다. 데이터는 structtreenode {intdata; structtreenode*왼쪽; structReenode*오른쪽;}을 나타냅니다. 작업은 트리 트래버스 트리 (사전 조정, 인 순서 및 나중에 순서) 검색 트리 삽입 노드 삭제 노드 그래프는 요소가 정점 인 데이터 구조 모음이며 이웃을 나타내는 오른쪽 또는 무의미한 데이터로 모서리를 통해 연결할 수 있습니다.

C 언어 파일 작동 문제의 진실 C 언어 파일 작동 문제의 진실 Apr 04, 2025 am 11:24 AM

파일 작동 문제에 대한 진실 : 파일 개방이 실패 : 불충분 한 권한, 잘못된 경로 및 파일이 점유 된 파일. 데이터 쓰기 실패 : 버퍼가 가득 차고 파일을 쓸 수 없으며 디스크 공간이 불충분합니다. 기타 FAQ : 파일이 느리게 이동, 잘못된 텍스트 파일 인코딩 및 이진 파일 읽기 오류.

C 언어 멀티 스레드 프로그래밍 : 초보자 안내서 및 문제 해결 C 언어 멀티 스레드 프로그래밍 : 초보자 안내서 및 문제 해결 Apr 04, 2025 am 10:15 AM

C 언어 멀티 스레딩 프로그래밍 안내서 : 스레드 생성 : pthread_create () 함수를 사용하여 스레드 ID, 속성 및 스레드 함수를 지정합니다. 스레드 동기화 : 뮤텍스, 세마포어 및 조건부 변수를 통한 데이터 경쟁 방지. 실제 사례 : 멀티 스레딩을 사용하여 Fibonacci 번호를 계산하고 여러 스레드에 작업을 할당하고 결과를 동기화하십시오. 문제 해결 : 프로그램 충돌, 스레드 정지 응답 및 성능 병목 현상과 같은 문제를 해결합니다.

CS 주 3 CS 주 3 Apr 04, 2025 am 06:06 AM

알고리즘은 문제를 해결하기위한 일련의 지침이며 실행 속도 및 메모리 사용량은 다양합니다. 프로그래밍에서 많은 알고리즘은 데이터 검색 및 정렬을 기반으로합니다. 이 기사에서는 여러 데이터 검색 및 정렬 알고리즘을 소개합니다. 선형 검색은 배열 [20,500,10,5,100,1,50]이 있으며 숫자 50을 찾아야한다고 가정합니다. 선형 검색 알고리즘은 대상 값이 발견되거나 전체 배열이 통과 될 때까지 배열의 각 요소를 하나씩 점검합니다. 알고리즘 플로우 차트는 다음과 같습니다. 선형 검색의 의사 코드는 다음과 같습니다. 각 요소를 확인하십시오. 대상 값이 발견되는 경우 : true return false clanue 구현 : #includeintmain (void) {i 포함

C 언어로 카운트 다운을 출력하는 방법 C 언어로 카운트 다운을 출력하는 방법 Apr 04, 2025 am 08:54 AM

C에서 카운트 다운을 출력하는 방법? 답변 : 루프 명령문을 사용하십시오. 단계 : 1. 변수 n을 정의하고 카운트 다운 번호를 출력에 저장합니다. 2. n이 1보다 작을 때까지 n을 지속적으로 인쇄하려면 while 루프를 사용하십시오. 3. 루프 본체에서 n의 값을 인쇄하십시오. 4. 루프가 끝나면 n을 1 씩 빼기 위해 다음 작은 상호 상호를 출력합니다.

C 언어 데이터 구조 : 인공 지능에서 데이터 구조의 핵심 역할 C 언어 데이터 구조 : 인공 지능에서 데이터 구조의 핵심 역할 Apr 04, 2025 am 10:45 AM

C 언어 데이터 구조 : 인공 지능 분야에서 데이터 구조의 주요 역할 개요 인공 지능 분야에서 데이터 구조는 다량의 데이터를 처리하는 데 중요합니다. 데이터 구조는 데이터를 구성하고 관리하고 알고리즘을 최적화하며 프로그램 효율성을 향상시키는 효과적인 방법을 제공합니다. 공통 데이터 구조는 일반적으로 C 언어로 사용되는 데이터 구조에는 다음이 포함됩니다. 배열 : 동일한 유형의 연속 저장된 데이터 항목 세트. 구조 : 다양한 유형의 데이터를 함께 구성하고 이름을 제공하는 데이터 유형. 링크 된 목록 : 데이터 항목이 포인터로 함께 연결되는 선형 데이터 구조. 스택 : 최후의 첫 번째 (LIFO) 원칙을 따르는 데이터 구조. 대기열 : 첫 번째 첫 번째 (FIFO) 원칙을 따르는 데이터 구조. 실제 사례 : 그래프 이론의 인접 테이블은 인공 지능입니다.

C 언어 함수의 개념과 그 정의 형식 C 언어 함수의 개념과 그 정의 형식 Apr 03, 2025 pm 11:33 PM

C 언어 함수는 재사용 가능한 코드 블록이며 처리를위한 매개 변수를 수신하며 결과를 반환합니다. 스위스 육군 나이프와 유사하며 강력하며 신중하게 사용해야합니다. 함수에는 형식 정의, 매개 변수, 반환 값 및 기능 본체와 같은 요소가 포함됩니다. 고급 사용법에는 기능 포인터, 재귀 함수 및 콜백 기능이 포함됩니다. 일반적인 오류는 유형 불일치이며 프로토 타입을 선언하는 것을 잊는 것입니다. 디버깅 기술에는 변수 인쇄 및 디버거 사용이 포함됩니다. 성능 최적화는 인라인 함수를 사용합니다. 기능 설계는 단일 책임의 원칙을 따라야합니다. C 언어 기능의 숙련도는 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.

C 언어로 파일 처리를위한 팁 문제 해결 C 언어로 파일 처리를위한 팁 문제 해결 Apr 04, 2025 am 11:15 AM

C 언어 처리 파일에 대한 팁 문제 해결 C 언어로 파일을 처리 할 때 다양한 문제가 발생할 수 있습니다. 다음은 일반적인 문제와 해당 솔루션입니다. 문제 1 : 파일 코드를 열 수 없음 : 파일*fp = fopen ( "myfile.txt", "r"); if (fp == null) {// 파일 열기 실패} 이유 : 파일 경로 오류 파일이 존재하지 않으면 파일을 확인하여 파일에 실패한 문제 : 파일 읽기 문제 2 : 코드를 확인하십시오. charbuffer [100]; size_tread_bytes = fread (버퍼, 1, siz

See all articles