(C) 파일 입출력 함수 정리 (1)


프로그래밍/C/C++

Written by Kuhave on 2009.12.26 20:41


파일 입출력 함수 정리

1. fopen 함수
 (1) 코드

#include 
FILE* fopen(const char *, const char*)

 (2) 함수 설명
 - 파일을 불러들이는 함수이다.

 (3) 함수 인수 설명
 - 첫 번째 : 파일의 이름
   두 번째 : 파일의 개방 모드

 모드 첫번째  의미 파일이 없으면   파일이 있으면
 r  읽기 (Read)  NULL 포인터 반환  정상 동작
 w  쓰기 (Write)  새 파일 생성  이전 파일 삭제
 a  추가 쓰기 (Append)  새 파일 생성  이전 파일 뒤에 추가
 r+  읽기와 쓰기  새 파일 생성  정상 동작
 w+  읽기와 쓰기  새 파일 생성  이전 파일 삭제
 a+  추가를 위한 읽기와 쓰기  새 파일 생성  이전 파일 뒤에 추가


 모드 두번째  의미  차이  특징
 t  텍스트(text) 모드  \r이 \r\n으로 변환됨.  기본 모드
 b  이진(binary) 모드  아무 변화 없음.   -

 (4) 리턴값 설명
 - 파일 포인터를 리턴한다.
   r 모드에서 파일이 없을 시 NULL 포인터를 리턴한다.


2. fclose 함수
(1) 코드
#include 
int fclose(FILE* fp);

(2) 함수 설명
- 파일을 닫는 함수이다.

(3) 함수 인수 설명
 - FILE* fp : 닫을 파일의 파일 포인터를 전달한다.

(4) 리턴값 설명
 - 잘 닫힌 경우 0(NULL)을 리턴한다.

3. 예시

#include 
int main(int argc,char** argv)
{

char* sFileName = "test.txt";
FILE* fp = fopen(sFileName, "r");
if(fp==NULL)
{
printf("File Open Error!!");
}

//코드 생략

fclose(fp);

}

'프로그래밍 > C/C++' 카테고리의 다른 글

(C) 파일 입출력 함수 정리 (1)  (0) 2009.12.26
[펌] #pragma 키워드 알기  (0) 2009.11.26

세벌식 사용 시작


잡담

Written by Kuhave on 2009.12.23 16:17


............................

좋구나.

왜 과학적인 자판인지 알겠다.

아직 적응은 안됬지만....
60타가 뭐냐..



....뭐, 연습하믄 되겠지

실행 파일 다운로드


드래그, 부대지정 액션을 한번 꾸며 보았다.

기능은 드래그(드래그), 부대지정(컨트롤 + 숫자1~0) , 불러오기(숫자 1~0) , 움직이기(오른쪽 마우스 클릭) 이 3가지다.

조만간 팀 프로젝트로 전략시뮬게임을 만들 건데 예행 연습(?)을 했다.
부대 지정이 되어야 전략 시뮬이고 뭐고 만들 것 아닌가....


이것을 짜면서 배운 것 : SDL에도 isKeyDown 비슷한 기능을 하는 함수가 있다는 것을 알게 되었다.
단지 키에 따라 적용 방법이 매우 다른 것 뿐...

여튼 만족 ^^;

'프로그래밍 > SDL' 카테고리의 다른 글

(C++ / SDL) 드래그 & 부대지정 프로그램  (0) 2009.12.15
점을 움직이는 프로그램(C++)  (0) 2009.11.26
< 사진출처 : 큐브엔조이 >

넘넘 갖고싶다 ㅠㅠ

돈 모이면 사야지 뭐 에휴....

끌리는구먼 흐헣헣

'잡담' 카테고리의 다른 글

블로그 재개  (0) 2015.06.10
세벌식 사용 시작  (0) 2009.12.23
딥블루 3x3x3 큐브 프로페셔널 투명 야광 블루 !!!!!!!!!!! 지를거야 제길 ㅜㅜ  (0) 2009.11.28
믹시 가입  (0) 2009.11.28
SyntaxHighlighter 설치!  (0) 2009.11.18
블로그 생성 완료  (0) 2009.11.14

믹시 가입


잡담

Written by Kuhave on 2009.11.28 09:32

가입이나 해야지

인증코드 : SoaXVwqTHlIDk8ch7yt5rdZjFSdhBZS0w_1dLP6WZyw,

'잡담' 카테고리의 다른 글

블로그 재개  (0) 2015.06.10
세벌식 사용 시작  (0) 2009.12.23
딥블루 3x3x3 큐브 프로페셔널 투명 야광 블루 !!!!!!!!!!! 지를거야 제길 ㅜㅜ  (0) 2009.11.28
믹시 가입  (0) 2009.11.28
SyntaxHighlighter 설치!  (0) 2009.11.18
블로그 생성 완료  (0) 2009.11.14

점을 움직이는 프로그램(C++)


프로그래밍/SDL

Written by Kuhave on 2009.11.26 16:11

 실행 파일 다운로드 링크


사용자 삽입 이미지


점을 움직이는 프로그램이다.

관성의 유무,중심점 주위에 도는 검은 점 등등을 설정 가능함.

수행평가용으로 만든 프로그램이었지만 어느 순간 강화하고있는 나를 발견(..)했다.




삼각함수의 위대함을 알게 되었다.
역시 수학적 사고력이 중요한 게야...



결론: 매우 뿌듯(^_^;;)

'프로그래밍 > SDL' 카테고리의 다른 글

(C++ / SDL) 드래그 & 부대지정 프로그램  (0) 2009.12.15
점을 움직이는 프로그램(C++)  (0) 2009.11.26

[펌] #pragma 키워드 알기


프로그래밍/C/C++

Written by Kuhave on 2009.11.26 15:53

#pragma 키워드는 컴파일러 제작 회사가 특정 플랫폼에 의존하는 기능을 확장하기위해 기능을 추가한 키워드이다.

해당 컴파일러가 지시명을 인식하지 못한다면 에러 또는 경고 메세지를 수반하지 않고서 #pragma의 지시를 무시하게  된다.


#pragma 옵션

  옵션

  설명

 allock_text

 

 comment

 코드 안에 특별한 주석을 기입함

 init_seg

 

 optimize

 

 auto_inline

 

 component

 

 inline_depth

 

 pack

 변수 정렬을 인위적으로 변경

 bss_seg

 

 data_seg

 다른 파일에서 데이터를 공유하고자할때

 inLine_recursion

 

 pointers_to_members

 

 check_stack

 

 function

 

 intrinsic

 

 setlocale

 

 code_seg

 

 hdrstop

 

 message

 컴파일시 메시지를 출력함

 vtordisp

 

 const_seg

 

 include_alias            

 

 once

 해당 파일이 한번만 포함

 warning

 컴파일러 경고 메시지를 만들거나 안보이게 함

 link

 실행화일에 파일을 링크


#pragma once

ex> #pragma once

전처리기가 이 행을 처리하려고 할 때, 이 파일은 오직 한 번 추가되어야 한다는 것을 알게 된다.


#pragma pack

ex>

#pragma pack(n)   //n으로 정렬방식을 바꾼다.

#pragma pack()     //Default 정렬방식을 바꾼다.

#pragma pack(push, n) //n의로 정렬 방식을 바꾸고 기존정렬방식을 스택에 저장한다.
#pragma pack(pop)       //스택에 저장한 정렬방식으로 다시 돌린다.


pack 지시자는 이 후 부터 선언되는 구조체의 정렬 방식을 지정하는 것이다. n은 컴파일러가 저장된 메모리에 데이터를 정렬하는 방법을 결정하는 byte의 크기이다.


ex>

#pragma pack(1)

typedef struct _TEST_STRUCT
{
    char CharValue;    //1byte
    char CahrValue2;  //1byte
    int  IntValue;         //4byte
    char* pCharValue; //4byte
    int* pIntValue;       //4byte

} TEST_STRUCT, *PTEST_STRUCT;
#pragma pack()

위 구조체를 sizeof() 로 구조체의 크기를 알아보면 문제가 있음을 알 수 있다. 위 구조체의 크기는 14byte이다. 하지만 sizeof()로 크기를 알아보면 16byte로 나타나는 것을 알 수 있다. 이 떄 pack을 사용하면 빈공간 없이 14byte로 구조체가 선언된것을 알 수 있다.


#pragma warning

ex>

#pragma warning (disable:4101)   // 경고를 무시하도록 한다.

#pragma warning (once:4101)      // 4101경고를 한 번만 출력한다.

#pragma warning (error:4700)       // 경고 대신 에러를 출력한다.

#pragma warning (3:4706)            // 4706번 경고를 레벨 3으로 올린다.

이 지시자는 컴파일시 나오는 경고를 설정한다. 이것으로 매 컴파일 마다 나오는 경고를 없애거나 한번만 나오게 할 수있다.

제어문

설명

once : 번호

반복되는 경고를 번만 출력한다.

default : 번호

원래 설정대로 되돌린다.

disable : 번호

경고를 출력하지 않는다.

error : 번호

경고를 에러로 처리한다.

level : 번호

경고의 레벨(1~4) 변경한다.

push[,n]

모든 경고의 레벨을 저장한다. n 있을 경우 저장과 동시에 전역 경고 레벨을 n으로 변경한다.

pop

스택에 마지막으로 저장된 경고 레벨을 복원한다.

 
#pragma comment
ex>
#pragma comment(lib, "d3d8.lib")
 
이 지시자는 해당 옵션에 따라 다양한 주석문 및 문자를 코드에 추가한다.

  옵션

  설명

 lib

 코드 내에서 명시적으로 라이브러리의 링크를 지정해준다

 exestr

 기록된 string 실행파일 내부에 기록되어지며, 이것은 결코 메모리로 load되지 않는다. 다만 파일 검색 유틸리티를 사용하여 실행파일에서 string 찾아볼 수 있다.

 user

 ".OBJ" file string을 기록합니다. 하지만 linker에 의해 string은 무시되어집니다. object 파일에만 그 내용이 남게 됩니다.

 
#pragma data_seg
ex>
#pragma data_seg(".mine$a")  //.mine 명으로 공유, Section 이름은 8자 또는 그 이하로 해야한다.
int g_nCount1 = 0;
#pragma data_seg(".mine$z")  //'$' 기호 전에 동일 이름인 섹션들은 한 개의 섹션으로 통합이 된다. 여기서 통합의 순서는
                                               '$'다음의 문자 정렬로 순서를 결정한다.
int g_nCount2 = 0;
#pragma data_seg()               //Default로 복원
 
 #pragma comment( linker, "/SECTION:.mine, RWS" )  // R:Read, W:Write, S:Shared
 
우선은 공유할 데이터(변수)를 Global 변수로 선언하고 #pragma data_seg를 위와 같이 추가한 다음 Linker 코드를 추가하면 g_nCount1과 g_nCount2데이터를 DLL 외부에서 공유할 수 있게 된다.

#pragma link

ex>

#pragma comment( linker, "/SECTION:.SHAREDATA, RWS" )  // R:Read, W:Write, S:Shared

이 지시자는 실행파일에 해당 파일을 Link 시킨다.

옵션

 설명

/ALIGN:number

Specifies the alignment of each section

/BASE:{address | @filename,key}

Sets a base address for the program

/COMMENT:["]comment["]

Inserts a comment string into header

/DEBUG

Creates debugging information

/DEBUGTYPE:CV
/DEBUGTYPE:COFF
/DEBUGTYPE:BOTH

Creates particular formats of debugging information

/DEF:filename

Passes a module-definition (.DEF) file to the linker

/DEFAULTLIB:library

Searches specified library when resolving external references

/DELAY

Controls the delayed loading of DLLs

/DELAYLOAD

Causes the delayed loading of the specified DLL

/DLL

Builds a DLL

/DRIVER[:UPONLY]

Creates a Windows NT kernel mode driver

/ENTRY:function

Sets the starting address

/EXETYPE:DYNAMIC

Builds a virtual device driver

/EXPORT

Exports a function

/FIXED[:NO]

Creates a program that can be loaded only at its preferred base address

/FORCE[:{MULTIPLE|UNRESOLVED}]

Forces link to complete in spite of unresolved or multiply defined symbols

/GPSIZE:#

Specifies the size of communal variables for MIPS and Alpha platforms

/HEAP:reserve[,commit]

Sets the size of the heap in bytes

/IMPLIB:filename

Overrides the default import library name

/INCLUDE:symbol

Forces symbol references

/INCREMENTAL:{YES|NO}

Controls incremental linking

/LARGEADDRESSAWARE

Tells the compiler that the application supports addresses larger than two gigabytes.

/LIBPATH:path

Allows the user to override the environmental library path

/LINK50COMPAT

Generates import libraries in Visual C++ Version 5.0 format

/MACHINE:{IX86|ALPHA|ARM|MIPS|MIPSR41XX|PPC|SH3|SH4}

Specifies the target platform

/MAP

Creates a map file

/MAPINFO:{EXPORTS|FIXUPS|LINES}

Includes the specified information in the map file

/MERGE:from=to

Combines sections

/NODEFAULTLIB[:library]

Ignores all (or specified) default libraries when resolving external references

/NOENTRY

Creates a resource-only DLL

/NOLOGO

Suppresses startup banner

/OPT:{REF|NOREF|ICF[,iterations]|NOICF}

Controls LINK optimizations

/ORDER:@filename

Places COMDATs into the image in a predetermined order

/OUT:filename

Specifies the output file name

/PDB:filename

Creates a program database (.PDB) file

/PDBTYPE:{con[solidate]|sept[ypes]}

Specifies where to store the Program Database (PDB) debug type information.

/PROFILE

Enables profiling (creates a mapfile)

/RELEASE

Sets the checksum in the .EXE header

/SECTION:name,attributes

Overrides the attributes of a section

/STACK:reserve[,commit]

Sets the size of the stack in bytes

/STUB:filename

Attaches an MS-DOS stub program to a Win32 program

/SUBSYSTEM:{CONSOLE|WINDOWS|NATIVE|POSIX|WINDOWSCE} [,major[.minor] ]

Tells the operating system how to run the .EXE file

/SWAPRUN:{NET|CD}

Tells the operating system to copy the linker output to a swap file before running it

/VERBOSE[:LIB]

Prints linker progress messages

/VERSION:major[.minor]

Assigns a version number

/VXD

Creates a virtual device driver (VxD)

/WARN[:level]

Specifies warning level

/WS:AGGRESSIVE

Aggressively trim process memory



출처 : http://blog.naver.com/pointer98?Redirect=Log&logNo=150036254090

허락없이 퍼 와서 죄송합니다.
문제가 된다면 자삭하겠습니다.

'프로그래밍 > C/C++' 카테고리의 다른 글

(C) 파일 입출력 함수 정리 (1)  (0) 2009.12.26
[펌] #pragma 키워드 알기  (0) 2009.11.26

SyntaxHighlighter 설치!


잡담

Written by Kuhave on 2009.11.18 11:00

음 ....

앞으로 소스코드를 넣을 기회(?)가 많을테니

SyntaxHighlighter를 설치해서 방문자들에게 보기 편하게 해야겠습니다.

까먹을 까봐 적는 사용법(More..)


시험 한번 해 봅시다.




'잡담' 카테고리의 다른 글

블로그 재개  (0) 2015.06.10
세벌식 사용 시작  (0) 2009.12.23
딥블루 3x3x3 큐브 프로페셔널 투명 야광 블루 !!!!!!!!!!! 지를거야 제길 ㅜㅜ  (0) 2009.11.28
믹시 가입  (0) 2009.11.28
SyntaxHighlighter 설치!  (0) 2009.11.18
블로그 생성 완료  (0) 2009.11.14

블로그 생성 완료


잡담

Written by Kuhave on 2009.11.14 16:48

네이버를 떠나 티스토리로 이전(?)했습니다.

앞으로 포스팅 많이 할 계획이니 자주 들러주세요~

'잡담' 카테고리의 다른 글

블로그 재개  (0) 2015.06.10
세벌식 사용 시작  (0) 2009.12.23
딥블루 3x3x3 큐브 프로페셔널 투명 야광 블루 !!!!!!!!!!! 지를거야 제길 ㅜㅜ  (0) 2009.11.28
믹시 가입  (0) 2009.11.28
SyntaxHighlighter 설치!  (0) 2009.11.18
블로그 생성 완료  (0) 2009.11.14