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)


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

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





반응형

평균 구하기


엑셀에서 평균을 구하는 두 개 함수가 있다.

함수명은 AVERAGE, AVERAGEA 이다.

각 함수를 사용해서 어떻게 평균을 구하는지 알아보겠다.


AVERAGE와 AVERAGEA를 이용한 평균 구하기

 


1. 평균 값을 표시할 셀 선택 -> 상단에 수식 선택 -> 자동합계 부분에 ▼ 버튼 클릭



2. 평균 선택



3. 평균 구할 범위를 지정



4. ENTER를 입력하면 평균값이 구해짐



5. 아무개 말고 여러 학생 평균 값 구함( 사오정의 점수는 아직 집계 되지 않아 평균값이 에러가 발생!! )



6. DIV/0! 에러를 없애기 위해 AVERAGE -> AVERAGEA로 바꿈



7. 모든 평균 구하는 함수를 AVERAGEA로 바꿈


AVERAGE는 지정한 영역만 평균을 낸다.

그렇기 때문에 지정한 영역에 숫자가 없으면 오류가 발생한다.

AVERAGEA는 지정한 부분에 값이 입력된 부분만 평균을 낸다.

그렇기 때문에 값이 없으면 평균을 내지 않아 오류가 발생하지 않는다.





반응형

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