FILE 구조체를 이용해 파일을 읽어보자


FILE 구조체를 이용해 파일 생성 읽기, 쓰기가 가능하다.

파일을 생성, 읽기, 닫기 3가지를 배워보겠다.


파일을 일단 읽어보자


[예제]

#include <stdio.h>


int main(int argc, char *argv[]) 

{

char file_buffer[30] = {0,};

FILE * file = fopen("Test.txt", "rt");

fgets(file_buffer,sizeof(file_buffer), file);

printf("data[%s]",file_buffer);

fclose(file);

return 0;

}



 data[test test]

 계속하려면 아무 키나 누르십시오...



프로그램 실행 파일이  있는 곳에 Test.txt 파일이 있어야 실행이 된다.

Test.txt파일을 메모장으로 열어 test test라는 문구를 입력하자.

다른 내용을 넣어도 되지만 file_buffer 사이즈가 넘지 않도록 한다.

넘으면 파일 내용이 전부 출력 되지 않는다.


fopen 사용법은 아래와 같다.

#include<stdio.h>

FILE * fopen( const char * filename, const char * mode )


첫번째 인자(filename)는 경로를 포함한 생성할 파일 명이 넣는다. 

경로가 없으면 프로그램이 실행 된 곳에 파일이 생성 된다.

두번째 인자(mode)는 파일 생성 타입을 설정 한다.

읽기(r), 쓰기(w), 추가(a), t(텍스트모드), b(2진모드)


fgets 사용법은 아래와 같다.

#include<stdio.h>

int fgets(char * s, int size, FILE * stream)


파일에서 데이터를 읽는 함수이다.

첫 번째 인자는 파일 내용을 저장할 버퍼를 넣는다.

두 번째 인자는 읽어 들일 사이지를 지정 한다. 보통 버퍼 사이즈를 입력한다.

세 번째 인자는 읽어들일  FILE 구조체를 넣는다.


fclose 사용법은 아래와 같다.

#include<stdio.h>

int fclose(FILE * stream)


파일을 종결할 때 사용하는 함수이다.

더이상 파일 접근을 할 필요가 없으면 반드시 종결 시켜준다.




반응형

FILE 구조체를 이용해 파일을 써보자.


FILE 구조체를 이용해 파일 생성 읽기, 쓰기가 가능하다.

파일을 생성, 쓰기, 닫기 3가지를 배워보겠다.


파일을 일단 써보자


[예제]

#include <stdio.h>


int main(int argc, char *argv[]) 

{

FILE * file = fopen("Test.txt", "wt");

fputs("test text", file);

fclose(file);

return 0;

}



 계속하려면 아무 키나 누르십시오...



프로그램 실행 파일이  있는 곳에 Test.txt 파일이 생성 되어 있을 것이다.

Test.txt파일을 메모장으로 열면 test text라는 문구가 찍힌걸 확인 할 수 있다.


fopen 사용법은 아래와 같다.

#include<stdio.h>

FILE * fopen( const char * filename, const char * mode )


첫번째 인자(filename)는 경로를 포함한 생성할 파일 명이 넣는다. 

경로가 없으면 프로그램이 실행 된 곳에 파일이 생성 된다.

두번째 인자(mode)는 파일 생성 타입을 설정 한다.

읽기(r), 쓰기(w), 추가(a), t(텍스트모드), b(2진모드)


fputs 사용법은 아래와 같다.

#include<stdio.h>

int fputs(const char * s, FILE * stream)


파일에 데이터를 입력하는 함수이다.

첫 번째 인자는 입력할 내용을 적는다.

두 번째 인자는 입력한 내용을 담을 파일을 설정 해준다.


fclose 사용법은 아래와 같다.

#include<stdio.h>

int fclose(FILE * stream)


파일을 종결할 때 사용하는 함수이다.

더이상 파일 접근을 할 필요가 없으면 반드시 종결 시켜준다.





반응형

strcmp, strncmp 문자열 비교 함수


C에서 문자열을 비교하는 함수가 있다.

바로 strcmp 와 ctrncmp이다.

함수의 리턴 값을 통해 문자열이 같은지 다른지 판단 할 수 있다.

문자열 길이 설정 여부에 따라 두 함수가 나누어 진다. 


strcmp 일반 문자열 비교


strcmp 사용법은 아래와 같다.

#include<string.h>

char * strcmp( const char * str1, const char * str2 )

ex) 

int result = 0;

char * str1 = "hello world";

char * str2 = "hello world";

if( strcmp( str1, str2 ) == 0 )

{

    printf("두 문자열은 같다.");

}

else

{

    printf("두 문자열은 같지 않다.");

}


 리턴 값

 의 미 

 0 보다 큰 값

 str1이 str2보다 큰 경우 

 0

 str1과 str2 일치

 0 보다 작은 값

 str1이 str2보다 작은 경우 


두개의 문자열 str1, str2가 있다. 

비교함수인 strcmp를 사용하여 확인 해보니 리턴 값이 0이 나왔다.

0이 나왔기 때문에 "두 문자열은 같다." 라는 메시지가 출력 된다.

예제를 보며 결과를 확인해 보자.


[예제]

#include <stdio.h>

#include <string.h> //<--- strcmp 함수 사용을 위해 추가 한다. 


int main(int argc, char *argv[]) 

{


int result = 0;

char * str1 = "hello world";

char * str2 = "hello world";

if( strcmp( str1, str2 ) == 0 ) //<--- strcmp 결과 값이 0이면 두 문자열이 같고 그렇지 않으면 다르다.

{

    printf("두 문자열은 같다.");

}

else

{

    printf("두 문자열은 같지 않다.");

}


}



 실행 결과

 두 문자열은 같다.

 계속하려면 아무 키나 누르십시오...




strncmp 지정 된 길이만큼 문자열 비교


strncmp 사용법은 아래와 같다.

#include<string.h>

char * strncmp( const char * str1, const char * str2, size_t n )

ex) 

int result = 0;

char * str1 = "hello man";

char * str2 = "hello world";

if( strncmp( str1, str2, 5 ) == 0 )

{

    printf("두 문자열은 같다.");

}

else

{

    printf("두 문자열은 같지 않다.");

}


 리턴 값

 의 미 

 0 보다 큰 값

 str1이 str2보다 큰 경우 

 0

 str1과 str2 일치

 0 보다 작은 값

 str1이 str2보다 작은 경우 


두개의 문자열 str1, str2가 있다. 

비교함수인 strcmp를 사용하여 확인 해보니 리턴 값이 0이 나왔다.

0이 나왔기 때문에 "두 문자열은 같다." 라는 메시지가 출력 된다.

예제를 보며 결과를 확인해 보자.


[예제]

#include <stdio.h>

#include <string.h> //<--- strncmp 함수 사용을 위해 추가 한다. 


int main(int argc, char *argv[]) 

{


int result = 0;

char * str1 = "hello man";

char * str2 = "hello world";

if( strncmp( str1, str2, 5 ) == 0 ) //<--- strncmp 결과 값이 0이면 두 문자열이 같고 그렇지 않으면 다르다.

{

    printf("두 문자열은 일부 같다.");

}

else

{

    printf("두 문자열은 일부 같지 않다.");

}

}



 실행 결과

 두 문자열은 일부 같다.

 계속하려면 아무 키나 누르십시오...





반응형

strcat, strncat 문자열 추가 함수


C에서 문자열을 추가하는 함수가 있다.

바로 strcat 와 ctrncat이다.

하나의 문자열 뒤에 또 다른 문자열을 추가하는 함수이다.

문자열 길이 설정 여부에 따라 두 함수가 나누어 진다. 


strcat 일반 문자열 추가


strcat 사용법은 아래와 같다.

#include<string.h>

char * strcat( char * dest, const char * src )

ex) 

char destStr[128] = "test string ";

char * srcStr = "hello world";

strcat( destStr, srcStr );


첫번째 인자 문자열인 destStr 뒤에 두번째 문자열인 "hello world"가 추가 된다.

예제를 보며 결과를 확인해 보자.


[예제]

#include <stdio.h>

#include <string.h>

#include <string.h> //<--- strcat 함수 사용을 위해 추가 한다. 


int main(int argc, char *argv[]) 

{

char destStr[128] = "test string ";

const char * srcStr = "hello world";

strcat( destStr, srcStr ); //문자열을 합친다. 

printf( " destStr[%s] \n",destStr);

return 0;

}



 실행 결과

 destStr[test string hello world]

 계속하려면 아무 키나 누르십시오...




strncat 지정 된 길이만큼 문자열 추가


strncpy 사용법은 아래와 같다.

#include<string.h>

char * strncat( char * dest, const char * src, size_t n )

ex) 

char destStr[128] = "test string";

char * srcStr = "hello world";

strncpy( destStr, srcStr, 5 );


두번째 인자 문자열인 "hello world" 에서 hello만 추가 하고 싶다.

그럼 strncat을 사용해 5문자열만 추가하게 할 수 있다.

다음 예제를 살펴 보자

[예제]

#include <stdio.h>

#include <string.h>

#include <string.h> //<--- strncpy 함수 사용을 위해 추가 한다. 


int main(int argc, char *argv[]) 

{

char destStr[128] = "test string"

const char * srcStr = "hello world";

strncat( destStr, srcStr, 5 ); //hello만 추가 하기 위해 5를 넣는다. hello는 5byte 이기 때문에 5를 넣는다.

printf( " destStr[%s] \n",destStr);

return 0;

}



 실행 결과

 destStr[test string hello]

 계속하려면 아무 키나 누르십시오...




반응형

+ Recent posts