๐—ฃ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜ ๐—”๐—ฉ๐—ฆ

Project AVS Since 2023.01.27

๐Ÿ’ป ์†Œํ”„ํŠธ์›จ์–ด | Software/ํ”„๋กœ๊ทธ๋ž˜๋ฐ | C์–ธ์–ด | C

๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“œ๋Š” C์–ธ์–ด ์ •๋ณด ๋ชจ์Œ #ํŒŒ์ผ ์ž…์ถœ๋ ฅ #์ŠคํŠธ๋ฆผ #๋ฒ„ํผ #๋ฌธ์ž์—ด ํ•จ์ˆ˜

์•„๋ฒต AVS 2023. 6. 1. 15:47

CTRL + F ๋กœ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰

๋ณธ ๊ธ€์€ ํ•„์ž๊ฐ€ C์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์“ฐ๋Š” ์ผ์ข…์˜ ์ €์žฅ ๋…ธํŠธ์ž…๋‹ˆ๋‹ค.

ํ•„์ž๋„ ๋ฐฐ์šฐ๋Š” ์ž…์žฅ์œผ๋กœ

ํ•„์š”ํ•˜์‹  ๋ถ„ ๋“ค์€ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค.

 

 

โ— Stream


์ŠคํŠธ๋ฆผ : ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํ๋ฅด๋Š” ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„

์‰ฝ๊ฒŒ ๋งํ•ด ๋ฐ์ดํ„ฐ์˜ ์ด๋™ ๊ฒฝ๋กœ, ์ฆ‰ ๋‹ค๋ฆฌ(Bridge)๋ฅผ ์˜๋ฏธ

 

์ฝ˜์†” ์ž…์ถœ๋ ฅ : ํ‚ค๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ๋“ฑ๊ณผ ๊ฐ™์€ ์ž…์ถœ๋ ฅ์„ ์˜๋ฏธ
ใ„ดprintf , scanf ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์Œ

์ด ๋ง์€ ์ฝ˜์†” ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ "์ž…๋ ฅ ์ŠคํŠธ๋ฆผ"๊ณผ "์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ"์€

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ์ž๋™ ์ƒ์„ฑ ํ›„ ์ž๋™ ์†Œ๋ฉธ ์ŠคํŠธ๋ฆผ

 

stdin : ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ / ํ‚ค๋ณด๋“œ ๋Œ€์ƒ ์ž…๋ ฅ

stdout : ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ / ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ ์ถœ๋ ฅ

stderr : ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ / ๋ชจ๋‹ˆํ„ฐ ๋Œ€์ƒ ์ถœ๋ ฅ

 

โ— putchar , fputc #๋ฌธ์ž ์ถœ๋ ฅ ํ•จ์ˆ˜


#include <stdio.h>
int putchar(int a);
int fputc(int a, FILE * stream);

fputc ํ•จ์ˆ˜๋Š” ๋ฌธ์ž๋ฅผ ์ „์†กํ•  ์ŠคํŠธ๋ฆผ์„ ์ง€์ •๊ฐ€๋Šฅ

์ฆ‰ stdout(๋ชจ๋‹ˆํ„ฐ ์ถœ๋ ฅ)๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ๋Œ€์ƒ์œผ๋กœ๋„ ์ „์†ก ๊ฐ€๋Šฅ

 

โ— getchar, fgetc #๋ฌธ์ž ์ž…๋ ฅ ํ•จ์ˆ˜


int getchar(void);
int fgetc(FILE *stream)

fgetc ํ•จ์ˆ˜ ์—ญ์‹œ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ ๋ฐ›์„ ์ŠคํŠธ๋ฆผ ์ง€์ • ๊ฐ€๋Šฅ

์ฆ‰ stdin(ํ‚ค๋ณด๋“œ ์ž…๋ ฅ)๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ๋„ ๊ฐ€๋Šฅ

 

์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์  ์ด๊ฒƒ๋“ค์˜ ๋ฐ˜ํ™˜ํ˜•์ด int๋‹ค

๊ทธ ์ด์œ ์— ๋Œ€ํ•ด...

 

char ๋ฅผ unsinged char๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์กด์žฌํ•จ.

(์ด ๋ง์€ ์Œ์ˆ˜๊ฐ€ ์ €์žฅ ์•ˆ ๋จ, MSB ๋ถ€ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„ํŠธ๋„ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ๋กœ ์“ฐ์ž„)

EOF๋Š” -1๋กœ ์ •์˜๋œ ์ƒ์ˆ˜๋‹ค.

charํ˜•์ด ๋ฐ˜ํ™˜์ด๋ฉด unsigne char๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int a1, a2;

	a1 = getchar();
	a2 = fgetc(stdin);

	putchar(a1);
	fputc(a2, stdout);

	return 0;
}

 

 

โ— EOF / End Of File


ํŒŒ์ผ์˜ ๋์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ •์˜ํ•œ ์ƒ์ˆ˜

 

ํŒŒ์ผ ๋Œ€์ƒ์œผ๋กœ fgetc ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๊ฐ€ EOF ์ด๋ฉด

ํŒŒ์ผ ๋์— ๋„๋‹ฌ ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

 

ํ‚ค๋ณด๋“œ ๋Œ€์ƒ์—์„œ fgetc , getchar ํ•จ์ˆ˜๊ฐ€ EOF ๋ฐ˜ํ™˜ํ• ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด๋‹ค

1 . ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹คํŒจ

2 . CTRL + Z ํ‚ค ์ž…๋ ฅ or CTRL + D (๋ฆฌ๋ˆ…์Šค)


prtinf scanf์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋„ ์ž…,์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‚˜

๋ฌธ์ž ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ๋Š” ์œ„์˜ ํ•จ์ˆ˜๋“ค์„ ์“ฐ๋Š”๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ , ์—ฐ์‚ฐ ์†๋„์—์„œ ์ด์ ์ด ์žˆ๋‹ค.


โ— puts , fputs #๋ฌธ์ž์—ด ์ถœ๋ ฅ ํ•จ์ˆ˜


#include <stdio.h>
int puts(const char *s);
int fputs(const char * s, FILE * stream);

์ด ๋‘˜์˜ ์ฐจ์ด

pust ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅ ํ›„ ๊ฐœํ–‰( New line)์ด ์‹คํ–‰๋˜์ง€๋งŒ

fputs ํ•จ์ˆ˜๋Š” ๊ฐœํ–‰(New line)์ด ์‹คํ–‰ ์•ˆ ๋˜๋ฏ€๋กœ \n ๋”ฐ๋กœ ์ถœ๋ ฅ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

โ— gets , fgets #๋ฌธ์ž์—ด ์ž…๋ ฅ ํ•จ์ˆ˜


#include <stdio.h>
char * gets(char *s);
char * fgets(char * s, int n, FILE * stream);

์‹คํ–‰ ์˜ˆ์‹œ

 

fgets ํ•จ์ˆ˜ ํ˜ธ์ถœํ›„ 012345678910 ์ž…๋ ฅ์„ ํ•˜๋ฉดsizeof(str) ๋ฐ˜ํ™˜๊ฐ’ 7๋ณด๋‹ค 1์ž‘์€

6๋งŒํผ์˜ ๋ฌธ์ž์—ด๋งŒ str ์ €์žฅ

๊ทธ ์ด์œ ์•ž์จ ๋ฐฐ์šด ๋ฌธ์ž์—ด์˜ ๋์—๋Š” ํ•ญ์ƒ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋„(\0)๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

fgets ํ•จ์ˆ˜๋Š” \n์„ ๋งŒ๋‚ ๋•Œ ๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ ์ฝ๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ๊ณต๋ฐฑ๋„ ๊ฐ™์ด ์ž…๋ ฅ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

โ— Standard ์ž…,์ถœ๋ ฅ๊ณผ ๋ฒ„ํผ (Buffer)


ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜๋“ค(printf , scanf , fputc ๋“ฑ๋“ฑ)

๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…,์ถœ๋ ฅ ํ•  ๊ฒฝ์šฐ

์ด๊ฒƒ๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ์ง€๋‚˜๊ฐ„๋‹ค.

fgets ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ• ๋•Œ

"์—”ํ„ฐ(Enter)"ํ‚ค๋ฅผ ์น˜๋Š” ์ˆœ๊ฐ„ ์ž…๋ ฅ ๋ฒ„ํผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ๋ฅผ ๊ฑฐ์น˜๋Š” ์ด์œ 

๋ฐ์ดํ„ฐ ์ „์†ก ํšจ์œจ์„ฑ : ๋งŒ์•ฝ ๋ฒ„ํผ๋ง ์—†์ด ์‹คํ–‰๋œ๋‹ค๋ฉด

ํ‚ค๋ณด๋“œ์—์„œ GSG ๋ผ๊ณ  ์ž…๋ ฅํ•  ๊ฒฝ์šฐ

G์ „์†ก S ์ „์†ก G ์ „์†ก ์ด๋ ‡๊ฒŒ 3๋ฒˆ ์ „์†ก์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿด ๋ฐ”์—

์ž…๋ ฅ ๋ฒ„ํผ์— GSG๋ฅผ ํ•œ ๋ฐฉ์— ๋ฌถ์–ด์„œ ๋ณด๋‚ด๋Š”๊ฒŒ ํšจ์œจ์ ์ด๋‹ค.

 

โ— fflush ํ•จ์ˆ˜ #์ถœ๋ ฅ ๋ฒ„ํผ ๋น„์šฐ๊ธฐ


์ถœ๋ ฅ ๋ฒ„ํผ๋ฅผ ๋น„์šด๋‹ค๋Š” ๊ฒƒ์˜ ์˜๋ฏธ

์ด ๋œป์€ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ์ถœ๋ ฅ ๋ฒ„ํผ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ „์†ก๋˜์—ˆ๋‹ค๋Š” ๋ง๋กœ๋„ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

#include <stdio.h>
int fflush(FILE * stream);

fflush(stdout) : ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฒ„ํผ ๋น„์šฐ๊ธฐ

 

fflush(stdin) : ์ปดํŒŒ์ผ๋Ÿฌ๋งˆ๋‹ค ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๋‚˜ํƒ€๋ƒ„ (๋ฒ„ํผ๊ฐ€ ์•ˆ ๋น„์›Œ์งˆ ์ˆ˜ ์žˆ์Œ)

 

 

์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•

void Clear(void)
{
	while(getchar()!='\n');
}

getchar๋Š” ๋ฌธ์ž ํ•˜๋‚˜ ํ•˜๋‚˜๋ฅผ ์ฝ๋Š” ํ•จ์ˆ˜๋‹ค.

๊ทธ๋ž˜์„œ ํ•˜๋‚˜์”ฉ ์ฝ์œผ๋ฉด์„œ \n๋ฅผ ๋งŒ๋‚˜๋ฉด ์ข…๋ฃŒ ๋˜๊ณ  ์ž…๋ ฅ ๋ฒ„ํผ๊ฐ€ ๋น„์›Œ์ง€๊ฒŒ ๋œ๋‹ค.

 

โ— strlen #๋ฌธ์ž์—ด ๊ธธ์ด ๋ฐ˜ํ™˜ ํ•จ์ˆ˜


strlen : ํ—ค๋”ํŒŒ์ผ #string.h ์— ์žˆ๋Š” ํ•จ์ˆ˜

#include <string.h>
size_t strlen(const char * s);

์—ฌ๊ธฐ์„œ size_t์˜ ์˜๋ฏธ

unsigned int = size_t

 

strlen์ด ๋ฐ˜ํ™˜ํ˜•์ด unsigned int ์ด๋ฏ€๋กœ

์ถœ๋ ฅํ• ๋•Œ๋Š” %u ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. (%d๋„ ๊ฐ€๋Šฅ)

 

โ— str ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋“ค


strcpy(n1,n2) : ๋ฌธ์ž์—ด ๋ณต์‚ฌ

strncpy(n1,n2,sizeof(n1)) : ์œ„๋ž‘ ์ฐจ์ด์ ์€ n2์˜ ๋ฌธ์ž ๊ธธ์ด๊ฐ€ 100์ด๊ณ  n1์ด 50์ด๋ผ๋ฉด

50์ด๋ผ๋Š” ์–‘ ๋ฐ–์— ๋ณต์‚ฌ๊ฐ€ ์•ˆ ๋œ๋‹ค.

 

strncpy์˜ 3๋ฒˆ์งธ ์ธ์ž : ๋„ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๊ณต๊ฐ„์„ ์ค˜์•ผ ํ•œ๋‹ค.๋”ฐ๋ผ์„œ sizeof(n1)-1 ์ด ์•Œ๋งž๋‹ค.

 

strcat(n1,n2) : n1๋’ค์— n2๋ฅผ ๋ถ™์ธ๋‹ค.

n1์˜ ๋„ ๋ฌธ์ž ์ž๋ฆฌ ๋Œ€์‹ ์— n2 ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

 

strncat(n1,n2, X ) : n2์˜ ๋ฌธ์ž์—ด์ค‘ ์ตœ๋Œ€ X๊ฐœ๋ฅผ n1๋’ค์— ๋ถ™์ธ๋‹ค.

n2์˜ ๊ธธ์ด๊ฐ€ X๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด X๊ธธ์ด ๋งŒํผ ๋ถ™์ด๋Š”๊ฑด๋ฐ

X๊ฐœ์—๋Š” ๋„ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ X+1๊ฐœ๊ฐ€ ๋ถ™๋Š”๋‹ค.

์œ„์˜ strncpy ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž๋™์œผ๋กœ ๋„ ๋ฌธ์ž ์‚ฝ์ž…์ด ๋œ๋‹ค.

 

strcmp(n1,n2) : n1์ด ํฌ๋ฉด 0๋ณด๋‹ค ํฐ ๊ฐ’ , n2๊ฐ€ ํฌ๋ฉด 0๋ณด๋‹ค ์ž‘์€ ๊ฐ’ , ๊ฐ™์œผ๋ฉด 0

strncmp(n1,n2,X) : X๊ฐœ๋งŒ ๋น„๊ต

 

int atoi(const char * str) : ๋ฌธ์ž์—ด ๋‚ด์šฉ์„ int๋กœ ๋ณ€ํ™˜

long atol ~~ : ๋ฌธ์ž์—ด ๋‚ด์šฉ์„ long์œผ๋กœ ๋ณ€ํ™˜

double atof ~~ : ๋ฌธ์ž์—ด ๋‚ด์šฉ์œผ๋กœ double๋กœ ๋ณ€ํ™˜ ;

 


 

๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ 2023 06 05

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•