ํฌ์ธํ„ฐ(pointer) ์ฃผ์š” ๋‚ด์šฉ ๋ฆฌ๋ทฐ

  • while(p2)=> ๋ฌดํ•œ ๋ฃจํ”„, ์ฃผ์†Œ๋Š” ๋์—†์ด ํŽผ์ณ์ ธ์žˆ์–ด์„œ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•œ๋‹ค๋Š” ๋œป์ž„.

  • while(*p2)=> * p2ํ•˜๋ฉด ๋ฌธ์ž์—ด ๋งˆ์ง€๋ง‰ ๊ณต๋ฐฑ์—์„œ ๊ฑธ๋ฆผ.

  • *cp = ์ฃผ์†Œ์•ˆ์— ๊ฐ’์„ ์ฐพ์•„๊ฐ€๋ผ

  • &cp = ์ฃผ์†Œ๊ฐ’

  • int* ptr;

  • int = ์ž๋ฃŒํ˜•

  • * = ํฌ์ธํ„ฐ์„ ์–ธ

  • ptr = ๋ณ€์ˆ˜๋ช…

  • int* == ์ธํŠธํ˜•์œผ๋กœ๋œ ์ฃผ์†Œ

  • int* ptr == ptr์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ฃผ์†Œ๋ณ€์ˆ˜

  • ptr = &num ptr์ด๋ผ๋Š” ์ฃผ์†Œ๋ณ€์ˆ˜์— num์ฃผ์†Œ ์ž…๋ ฅ

  • ptr ptr์ฃผ์†Œ์•ˆ์— ๊ฐ’ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • int *b = &a; => ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ๋‚ด ์ฃผ์†Œ ์„ ์–ธ ์˜ˆ)

  • cf. int b = &a; (x)

ํฌ์ธํ„ฐ(pointer) ๊ฐœ๋…

  • ํฌ์ธํ„ฐ(pointer)๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ '๊ฐ’'์ด๋‹ค.

*๋Š” ๊ฐ’์ด๋‹ค.
&๋Š” ์ฃผ์†Œ๊ฐ’์ด๋‹ค.

  • ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ๊ฐ’(&)์„ ๋‹ด๋Š”๋‹ค. ๋‹จ, *๋ฅผ ๋ถ™์ด๋ฉด, ์ฃผ์†Œ๊ฐ’์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’(์ฆ‰, 5 (ex.int num =5;))๊ฐ€ ๋œ๋‹ค.

๐Ÿ”ฝ & (ampersand) ์ดํ•ด

  • &๊ฐ€ ๋ถ™์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์ฃผ์†Œ๊ฐ’์ด ๋œ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋ฌด์กฐ๊ฑด ์ฃผ์†Œ๊ฐ’์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ˆ˜ํ•œ ๊ธฐํ˜ธ &๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค. ์ด์ œ ์•„๋ž˜ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

    • ์ด ๊ทธ๋ฆผ์—์„œ ์ƒ๊ฐํ•ด์•ผ ํ•  ์ ์€ ์™œ &ptr=0xB๋ƒ๋Š” ๊ฒƒ์ด๋‹ค.
    • &๊ธฐํ˜ธ๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋‹ด๋Š” ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ &ptr๊ณผ &num์˜ ์ฃผ์†Œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค. ๋‹น์—ฐํ•œ ๋ง์ด๋‹ค.

ํฌ์ธํ„ฐ ์ฃผ์š” ํŠน์ง•

    1. ํฌ์ธํ„ฐ์˜ ์ •์˜: ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜
    1. ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ : ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋งŒ์œผ๋กœ ๊ทธ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ
    1. ํฌ์ธํ„ฐ๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•: ๋ณ€์ˆ˜๋ช… ์•ž์— *๋ฅผ ๋ถ™์ธ๋‹ค.
    1. ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•: ๋ณ€์ˆ˜๋ช… ์•ž์— &๋ฅผ ๋ถ™์ธ๋‹ค.
    1. ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•: ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์•ž์— *๋ฅผ ๋ถ™์ธ๋‹ค.
  • ์„ ์–ธํ•œ ํฌ์ธํ„ฐ ํƒ€์ž…(type)๊ณผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์ฃผ์†Œ์˜ ํƒ€์ž…(type)์ด ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

  • ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ์„ ์–ธ๋˜๋Š” ์ž๋ฃŒํ˜•๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๋ฉฐ 32๋น„ํŠธ ์šด์˜์ฒด์ œ์—์„œ๋Š” 4๋ฐ”์ดํŠธ, 64๋น„ํŠธ ์šด์˜์ฒด์ œ์ธ ๊ฒฝ์šฐ์—๋Š” 8๋ฐ”์ดํŠธ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

๐Ÿ”ฝ ํฌ์ธํ„ฐ ์ดํ•ด

#include <stdio.h>

int main()
{
	int number = 5;  // 1. ์ฒ˜์Œ์— number ๋ณ€์ˆ˜์— 5๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๊ตฌ์š”.
	printf("%p\n",&number);  // 2. number์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ํ˜ธ์ถœ
	printf("%d\n",number); // 3. number์˜ ๋ณ€์ˆ˜๊ฐ’ 5๋ฅผ ํ˜ธ์ถœ
	
	int *pointer = &number;  // 4. ํฌ์ธํ„ฐ๋ณ€์ˆ˜ *pointer๋ฅผ ์„ ์–ธํ•œ ๋’ค number์˜ 
                             // ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
	*pointer = 3;  // 5. ํฌ์ธํ„ฐ๋ณ€์ˆ˜ ๊ฐ’์„ 3์œผ๋กœ ์ดˆ๊ธฐํ™”
	printf("%p\n",pointer); // 6. pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” number์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๋™์ผ
	printf("%d",*pointer);  // 7. 4๋ฒˆ์ด ์‹คํ–‰๋˜์—ˆ์œผ๋‹ˆ ํฌ์ธํ„ฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ธฐ์กด์˜ ๊ฐ’ 5์—์„œ 3์œผ๋กœ 
                            // ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์ถœ๋ ฅ๋จ.
	
	return 0;
}

pointer1.c

// pointer1.c

#include <stdio.h>

// ํฌ์ธํ„ฐ(Pointer) : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค(๋ฉ”๋ชจ๋ฆฌ)์˜ ์ž„์˜์˜ ์ฃผ์†Œ 

int main()
{
	double dnum; // ๋ณ€์ˆ˜(๊ฐ’)
	double *dp; //ํฌ์ธํ„ฐ๋ณ€์ˆ˜(๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ) // * : ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž 
	char *ptr; 

	dnum = 1.6; //cf. ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์ฃผ์†Œ๋Š” ํฌ์ธํ„ฐ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Œ 
	printf("%lf, %p \n", dnum, &dnum); 

	dp = &dnum;  
			//์‹คํ–‰๋ฌธ * : ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž 
	// ํฌ์ธํ„ฐ์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํฌ์ธํ„ฐ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ๋งŒํผ ๊ฐ€๋ฆฌํ‚จ๋‹ค 
	printf("%lf, %p \n", *dp, dp);   

	// ptr = &dnum; //์„ ์–ธํ•œ ํฌ์ธํ„ฐ ํƒ€์ž…(type)๊ณผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์ฃผ์†Œ์˜ ํƒ€์ž…(type)์ด ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.
	// printf("%p \n", ptr);  
	// printf("%lf \n", ptr);

	printf("%d, %d, %d \n", sizeof(dnum), sizeof(dp), sizeof(ptr)); 

	return 0; 
}

pointer2.c

//pointer2.c 

#include <stdio.h>

int main()
{ 
	char ch='A', * cp;
	int num = 100, * ip;
	float fnum=1.1, * fp; 
	double dnum=5.2, * dp;

	printf("%c, %d, %f, %lf \n", ch, num, fnum, dnum); 

	// ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜์—ฌ
	cp = &ch; //๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
	ip = &num; 
	fp = &fnum; 
	dp = &dnum; 

	// ์ฃผ์†Œ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. 
	printf("%c, %d, %f, %lf \n", *cp, *ip, *fp, *dp); 

	*ip = 37; //ํฌ์ธํ„ฐ๋ณ€์ˆ˜ ๊ฐ’์„ 37์œผ๋กœ ์ดˆ๊ธฐํ™”
	printf("num: %d \n", num); //ํฌ์ธํ„ฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ธฐ์กด์˜ ๊ฐ’ 5์—์„œ 3์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์ถœ๋ ฅ๋จ.

	return 0; 
}

ํฌ์ธํ„ฐ ์—ฐ์‚ฐ

  • ์—ฌ๊ธฐ์„œ๋Š” numPtrA๊ฐ€ 4๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ intํ˜•์ž…๋‹ˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ numPtrA + 1์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ 4๋ฐ”์ดํŠธ๋งŒํผ 1๋ฒˆ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ๋œป(ํฌ์ธํ„ฐ ์ „์ง„, forward)์ด๊ณ , numPtrA + 2๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ 4๋ฐ”์ดํŠธ๋งŒํผ 2๋ฒˆ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

  • ์ฆ‰, ๊ณ„์‚ฐ์‹์€ "sizeof(์ž๋ฃŒํ˜•) * ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ๊ฐ’"์ด ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฐฐ์—ด์€ ๋ชจ๋‘ ํฌ์ธํ„ฐ์— ํ•ด๋‹น
    +) ๋ฐฐ์—ด ์›์†Œ ๊ฐœ์ˆ˜ = sizeof(๋ฐฐ์—ด๋ช…) / sizeof(์ž๋ฃŒํ˜•);

  • count+1 = &count[1] = ptr+1 (๊ฐ™์€ ์ฃผ์†Œ ์ง€๋‹˜)

  • * (count+1) = count[1] = *(ptr+1) (๊ฐ™์€ ๊ฐ’์„ ์ง€๋‹˜)

pointer3.c

//pointer3.c
#include <stdio.h>

int main()
{

	int num[5] = { 100, 200, 300, 400, 500 }, i;
	int* ptr; // ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š” ๊ฐ’์„ ์•Œ๋ ค์คŒ 

	printf("%d, %d \n", sizeof(num), sizeof(ptr));

	ptr = num;//์ฒจ์ž์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜๋ช…: ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋„˜๊ฒจ ๋ฐ›์Œ , num๋„ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ์ด๋ฏ€๋กœ ํฌ์ธํ„ฐ์— ํ•ด๋‹น=> ํฌ์ธํ„ฐ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ *(num+i) 
	for (i = 0; i < 5; i++)
		printf("%p: %d, %d, %d \n",num+i, *(ptr + i), *(num+i), ptr[i]) ; // ptr+2 (์ž๋ฃŒํ˜•์ด ์ •์ˆ˜ํ˜•์ด๋ฏ€๋กœ ์ฃผ์†Œ + 4byte*2) , ๊ด„ํ˜ธ ์‚ฌ์šฉ ํ•„ 
	    //cf.) printf("%p: %d, %d \n", &num[i], num[i], *ptr + i); // ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ด ์•„๋‹Œ ๊ฐ’์˜ ์—ฐ์‚ฐ ์šฐ์„  ์ˆ˜ํ–‰ 101, 102,,
	printf("\n");

	char str[20] = "kingdom", * p2; 

	p2 = str; 
	printf("%c, %c, %c, %c \n", str[0], *(str + 0), *str, *p2); // %c๋Š” ๋‹จ์ผ ๋ฌธ์ž // ์ฃผ์†Œ*1byte(char type) ํ• ๋‹น๋œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ('k')
	printf("%p: %s, %s \n", str, str, p2); // %p, s๋Š” ์ฃผ์†Œ๊ฐ’ 
	
	// ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•œ ๋ฐฐ์—ด ์ถœ๋ ฅ (k,i,n,g,d,o,m)

	while (*p2) // while(k) => ๊ด„ํ˜ธ ์•ˆ์ด 0์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ฐธ 
		// ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์ธ์ง€ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ *p2 
	{
		printf("%c, ", *p2++);// 6000์ฃผ์†Œ์— ํ• ๋‹น๋œ ๊ฐ’, 6001์ฃผ์†Œ์— ํ• ๋‹น๋œ ๊ฐ’,,,
		//p2++;  
	}
	printf("\n"); 
	/*for (i = 0; str[i]; i++)
	{
		printf("%c\n", str[i]);
	}
	*/
	
	return 0; 

}

๐Ÿ”ฝ [pointer3.c] p2 ์ž๋ฆฌ์— str ๋Œ€์ž…์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

  • ์ฒจ์ž ์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” ํฌ์ธํ„ฐ ์ƒ์ˆ˜์ž„. (์ƒ์ˆ˜, ๋ถˆ๋ณ€ ๊ฐ’ => ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ)
  • ์ฆ‰, ์ฒจ์ž ์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜(str)๋Š” ํฌ์ธํ„ฐ ์ƒ์ˆ˜์ด๋ฏ€๋กœ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ์ ˆ๋Œ€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ!
  • ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋ฉด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ๋Œ€์ž… ํ•„ (์ฒจ์ž ์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜(์ƒ์ˆ˜๊ฐ’)๋Š” ๊ฐ’๋งŒ ๋Œ€์ž… ๊ฐ€๋Šฅํ•˜๊ณ  ์ฃผ์†Œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•จ)
  • +) ๋ฐฐ์—ด ์ „์ฒด๋กœ ์›์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด์œ ? => ์ฒจ์ž์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜๋Š” ์ƒ์ˆ˜๊ฐ’์ด๋ฏ€๋กœ~ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ

int x[10] = {1,2,,,} 
int y[10] = {,,}
y = x; 

ํฌ์ธํ„ฐ์™€ ๋ฌธ์ž์—ด

ref. https://blockdmask.tistory.com/348

๋‹น์ผ ๋ฌธ์ œ ํ’€์ด ๊ณผ์ œ

  • 9์žฅ ์—ฐ์Šต๋ฌธ์ œ 9-8
// <9-8>
#include <stdio.h>
#include <string.h>

int main(void)
{
    char names[10][20] = { "kim","lee","sin","jo","kim2",
                       "chae","jin","bak","so","chol" };
    int i, j;
    char tmp[20];

    printf("\n๋ฐฐ์—ด ์ดˆ๊ธฐํ™”\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    for (i = 0; i < 9; i++)
        for (j = 0; j < 9 - i; j++)
            if (strcmp(names[j], names[j + 1]) > 0)
            {
                strcpy(tmp, names[j]);
                strcpy(names[j], names[j + 1]);
                strcpy(names[j + 1], tmp);
            }

    printf("\nSorted Result\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    return 0;
}
  • 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-5
// 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-5 

#include <stdio.h>
#define LENGTH 12 // ์ตœ๋Œ€ 12์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค 

int main()
{
	int i, len = 0; 
	int cn = 0;
	char str[LENGTH];

	printf("input string :");
	// %[^\n]s => scanf_s ํ•จ์ˆ˜์—์„œ ๊ณต๋ฐฑ์„ ํฌํ•จํ•ด ์ž…๋ ฅ ๋ฐ›์Œ (๋„์–ด์“ฐ๊ธฐ๋ฅผ ์—†์•ฐ)  
	// %s๋ผ๊ณ ๋งŒ ์ ์œผ๋ฉด ๊ณต๋ฐฑ์„ ๊ตฌ๋ถ„์ž๋กœ ๋ด์„œ ์ž…๋ ฅ์„ ๊ณต๋ฐฑ๊นŒ์ง€๋งŒ ๋ฐ›์Œ (C๋งŒ ์ถœ๋ ฅ)
	// ์•„๋ž˜์™€ ๊ฐ™์ด 'ํ˜•์‹ ์ง€์ •์ž'๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๊ณต๋ฐฑ ํฌํ•จ ์ž…๋ ฅ ๋ฐ›์Œ 
	scanf_s("%[^\n]s", str, LENGTH - 1); 


	// NULL ๋ฌธ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ด๋™ , ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ str ๋ฐฐ์—ด์— ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
	while (str[len] != 0)
		len++; 

	// str ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž์—ด์„ ๊ฑฐ๊พธ๋กœ ์ถœ๋ ฅ 
	// len -1 ์—์„œ ์‹œ์ž‘ํ•ด์„œ 1์”ฉ ๊ฐ์†Œ
	// i ๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ 
	printf("์ถœ๋ ฅ : \n");
	for (i = len - 1; i >= 0; --i)
	{
		printf("%c", str[i]); // ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅ 
		cn++; 
	}
	// ์ค„๋ฐ”๊ฟˆ 
	printf("\n");

	printf("๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ: %d", cn);

	return 0; 
}



  • 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-7
// <10 - 7>
#include <stdio.h>

int main(void)
{
	char str[50] = "Multi Campus.";
	char* ptr;

	printf("before : %s\n", str);

	for (ptr = str; *ptr; ++ptr)
	{
		if ('a' <= *ptr && *ptr <= 'z')
			*ptr -= 32;
		else if ('A' <= *ptr && *ptr <= 'Z')
			*ptr += 32;
	}

	printf("after : %s\n", str);

	return 0;
} 
  • 10์žฅ workbook 2-1
// 10์žฅ ์›Œํฌ๋ถ 2-1 ํ’€์ด 

#include <stdio.h>

int main() 
{
	char msg[100] = "Hello World !!!"; 
	char* ptr = msg; 

	printf("msg : %s \n", msg); 

	while (*ptr)
	{
		printf("%c, ", *ptr);
		ptr++;  
	}

	printf("\n"); 

	return 0; 
}
  • 10์žฅ workbook 3-1
// 10์žฅ ์›Œํฌ๋ถ  3-1 ํ’€์ด 

#include <stdio.h>

int main()
{
	char str[50] = "Multi Campus.", tmp[50]; // ๋ฌธ์ž์—ด ๋ฐฐ์—ด ์ƒ์„ฑ 
	char *from, *to; // str ๋ฐฐ์—ด์„ tmp๋กœ ๋ณต์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ํฌ์ธํ„ฐ ์ƒ์„ฑ

	from = str; // ํฌ์ธํ„ฐ์™€ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ (๊ฐ ํฌ์ธํ„ฐ๋“ค์„ ๋ฐฐ์—ด์— ์—ฐ๊ฒฐ) // str ์ฃผ์†Œ ์ €์žฅ
	to = tmp; // tmp ์ฃผ์†Œ ์ €์žฅ 

	while (*from != '\0')//๋ฐ˜๋ณตํ•  ์กฐ๊ฑด // *from๊ณผ '\0' ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฐธ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“, ์ฆ‰ null ๊นŒ์ง€ ๊ฐ€๋ฉด while๋ฌธ ์ข…๋ฃŒ 
	{
		*to++ = *from++; 

	}

	*to = '\0'; // null ๋ฌธ์ž ์ถ”๊ฐ€ ('\0'์€ ์“ฐ๋ ˆ๊ธฐ๊ฐ’ null์„ ์˜๋ฏธ) 

	printf("str: %s, tmp: %s \n", str, tmp);

	return 0; 
}


10์žฅ ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด

  • 10-1

      1. ํฌ์ธํ„ฐ
      1. &(์•ฐํผ์ƒŒ๋“œ)
      1. ์‹œ์ž‘ ์ฃผ์†Œ
      1. ํฌ์ธํ„ฐ
      1. *
      1. 4byte
      1. %p
      1. ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ํฌ์ธํ„ฐ
  • 10-2

    • ๋‹ต: 2๋ฒˆ
    • ํ•ด์„ค: ํฌ์ธํ„ฐ์— ์ฃผ์†Œ๊ฐ’์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค
      char *b = &a; ํ•„์š”
  • 10-3

  • 10-4

    • ๋‹ต: 4๋ฒˆ
    • ํ•ด์„ค:
      4-1 ์ฃผ์†Œ์„ ์–ธ ์•ˆ๋จ
      4-2 ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฆ„
      4-3 ์‹ค์ˆ˜์—ฐ์‚ฐ ๋ถˆ๊ฐ€
      4-4 ์ž๋ฃŒํฌ๊ธฐ ์˜ค๋ฅ˜
  • 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-5

// 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-5 

#include <stdio.h>
#define LENGTH 12 // ์ตœ๋Œ€ 12์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค 

int main()
{
	int i, len = 0; 
	int cn = 0;
	char str[LENGTH];

	printf("input string :");
	// %[^\n]s => scanf_s ํ•จ์ˆ˜์—์„œ ๊ณต๋ฐฑ์„ ํฌํ•จํ•ด ์ž…๋ ฅ ๋ฐ›์Œ (๋„์–ด์“ฐ๊ธฐ๋ฅผ ์—†์•ฐ)  
	// %s๋ผ๊ณ ๋งŒ ์ ์œผ๋ฉด ๊ณต๋ฐฑ์„ ๊ตฌ๋ถ„์ž๋กœ ๋ด์„œ ์ž…๋ ฅ์„ ๊ณต๋ฐฑ๊นŒ์ง€๋งŒ ๋ฐ›์Œ (C๋งŒ ์ถœ๋ ฅ)
	// ์•„๋ž˜์™€ ๊ฐ™์ด 'ํ˜•์‹ ์ง€์ •์ž'๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๊ณต๋ฐฑ ํฌํ•จ ์ž…๋ ฅ ๋ฐ›์Œ 
	scanf_s("%[^\n]s", str, LENGTH - 1); 


	// NULL ๋ฌธ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ด๋™ , ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ str ๋ฐฐ์—ด์— ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
	while (str[len] != 0)
		len++; 

	// str ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž์—ด์„ ๊ฑฐ๊พธ๋กœ ์ถœ๋ ฅ 
	// len -1 ์—์„œ ์‹œ์ž‘ํ•ด์„œ 1์”ฉ ๊ฐ์†Œ
	// i ๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ 
	printf("์ถœ๋ ฅ : \n");
	for (i = len - 1; i >= 0; --i)
	{
		printf("%c", str[i]); // ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅ 
		cn++; 
	}
	// ์ค„๋ฐ”๊ฟˆ 
	printf("\n");

	printf("๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ: %d", cn);

	return 0; 
}


  • 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-7
// <10 - 7>
#include <stdio.h>

int main(void)
{
	char str[50] = "Multi Campus.";
	char* ptr;

	printf("before : %s\n", str);

	for (ptr = str; *ptr; ++ptr)
	{
		if ('a' <= *ptr && *ptr <= 'z')
			*ptr -= 32;
		else if ('A' <= *ptr && *ptr <= 'Z')
			*ptr += 32;
	}

	printf("after : %s\n", str);

	return 0;
} 
 

9์žฅ WorkBook ํ’€์ด, ๋…ผ๋ฆฌ ๋ถ„์„(๊ฐ์ฃผ)

Level1_1.c

#include<stdio.h>
#include<string.h>

int main()
{
	char names[5][20] = { "kim","lee","han","park","uk" };//๋ฌธ์ž๋ฐฐ์—ด์„ ์–ธ
	char tmp[100] = "";
	int i;
	for (i = 0; i < 5; i++)
	{
		strcat(tmp, names[i]);	 //tmp๋’ค์— names[i]๋ถ™์ด๊ธฐ
		strcat(tmp, ","); //tmp๋’ค์— ,๋ถ™์ด๊ธฐ

	}

	printf("tmp : %s \n", tmp);	 //๋ฌธ์ž ์ถœ๋ ฅ

	return 0;
}

๐Ÿ”ฝ

Level1_2.c

// Level1_2.c
#include<stdio.h>

int main()
{
	int score[4][5] = { {78, 90,34, 46,80},{98, 74,84, 76,72},{76, 48,34, 72,89},{61, 91,67, 88,83} }; //๋ฐฐ์—ด ์ดˆ๊ธฐํ™”, 4์นธ์•ˆ์— 5๊ฐœ์”ฉ ์ €์žฅ(4ํ–‰ 5์—ด)
	int i, j, sum = 0, row, col;  //๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™” 

	row = sizeof(score) / sizeof(score[0]);//ํ–‰ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ sizeof(score) / sizeof(score[0])ํฌ๊ธฐ 
	// 80(4ํ–‰x5์—ดx4byte)/20(5์—ดx4byte) = 4 
	col = sizeof(score[0]) / sizeof(score[0][0]);//์—ด ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ sizeof(score[0]) / sizeof(score[0][0])ํฌ๊ธฐ
	// 20(5์—ดx4byte)/4(1x4byte) = 5 
	for (i = 0; i < row; i++)//0๋ถ€ํ„ฐ row๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€
	{
		for (j = 0; j < col; j++) //0๋ถ€ํ„ฐ col๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€
		{
			//๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๊ณผ ๋ˆ„์ 
			printf("%d, ", score[i][j]);
			sum += score[i][j];	//sum=sum+score[i][j]//sum์—๋‹ค๊ฐ€ ๊ฐ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ˆ„์  ํ•ฉ์„ ํ•ด์คŒ
		}
		//ํ‰๊ท ์ ์ˆ˜ ๊ณ„์‚ฐ ๋ฐ ์ถœ๋ ฅ
		printf("=>%.2f\n", (double)sum / col); //์†Œ์ˆ˜์  2์งธ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅ//sum / col์„ floatํ˜• ๋ณ€ํ™˜
		sum = 0;//0์œผ๋กœ ์ดˆ๊ธฐํ™”
	}

	return 0;
}

๐Ÿ”ฝ

Level1_3.c

#include<stdio.h>
#include<string.h>

int main()
{
	char names[10][20]; //2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
	int i, Cn; //intํ˜• i, Cn ๋ณ€์ˆ˜ ์„ ์–ธ

	for (i = 0; i < 10; i++)//0์—์„œ 9๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€
	{
		printf("%d, ์„ฑ๋ช…? (์ž…๋ ฅ์ข…๋ฃŒ:end) ", i + 1);//์œ„์—์„œ i๋Š” 0์ด๊ณ  ์—ฌ๊ธฐ์— 1์„ ๋”ํ•ด์„œ 1์ด ์ถœ๋ ฅ๋จ
		scanf("%s", names[i]);//์ž…๋ ฅ
		if (!strcmp(names[i], "end"))//์ข…๋ฃŒ์กฐ๊ฑด  //strcmp๋ฅผ ํ™œ์šฉํ•ด์„œ end์™€ ๊ฐ™๋‹ค๋ฉด ์ข…๋ฃŒ
			break;
	}
	Cn = i;//์ž…๋ ฅ๋œ ์ธ์›์ˆ˜ ์ €์žฅ

	printf("\n์ž…๋ ฅ๋œ ์„ฑ๋ช…=> \n");
	for (i = 0; i < Cn; i++)//์ถœ๋ ฅํ•œ ๋ฐ˜๋ณต๋ฌธ
		printf("%-10s,", names[i]);//%-nd๊ผด int ๊ฐ’์„ n์นธ ๋งŒํผ ๊ณต๊ฐ„์„ ๋ฐฐ์ •ํ•˜๊ณ  ์™ผ์ชฝ ์ •๋ ฌ, -๋นผ๋ฉด ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ
	printf("\n");

	return 0;
}

๐Ÿ”ฝ

Level2_1c

#include<stdio.h>

#define stuSZ 5

int main()
{
	int answer[20] = { 1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4 };//1์ฐจ์› ์ˆซ์ž ๋ฐฐ์—ด์ดˆ๊ธฐ ๊ฐ’

	int student[stuSZ][20] = { {1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,1},
							 {1,1,3,1,1,3,3,4,3,2,3,4,1,2,3,4,3,2,3,1},
							 {4,3,1,1,1,2,3,4,1,2,2,4,2,2,3,4,4,2,3,2},
							 {1,2,4,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4},
							 {4,2,3,4,1,4,3,4,1,1,3,4,1,2,3,1,1,2,3,4} };//2์ฐจ์› ์ˆซ์ž ๋ฐฐ์—ด ์ดˆ๊ธฐ ๊ฐ’
	int i, j, sum = 0;//๋ณ€์ˆ˜ ์„ ์–ธ

	for (i = 0; i < stuSZ; i++)//stuSZ=5์ด๊ธฐ ๋•Œ๋ฌธ์— 0,1,2,3,4๊นŒ์ง€
	{
		//์ •๋‹ต์„ ๋น„๊ตํ•˜์—ฌ ์ ์ˆ˜ ์ถœ๋ ฅ
		int score = 100;

		for (int j = 0; j < 20; j++)//0๋ถ€ํ„ฐ19๊นŒ์ง€ j๋ฅผ ์ฆ๊ฐ€
		{
			if (answer[j] != student[i][j])//answer[j]๊ฐ€s tudent[i][j]์™€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด
				score -= 5;//์ ์ˆ˜=์ ์ˆ˜-5 ์‹คํ–‰
		}

		printf("%d๋ฒˆ ์ ์ˆ˜ : %d \n", i + 1, score);
	}
	return 0;
}

๐Ÿ”ฝ

Level2_2c

#include<stdio.h>

#define STUDENT 4
#define SUBJECT 5

void heading();

int main()
{
	char names[STUDENT + 1][20] = { "ํ™๊ธธ๋™","์„ฑ์ถ˜ํ–ฅ","์ง„๋‹ฌ๋ž˜","๊ฐœ๋‚˜๋ฆฌ","ํ•œ์†ก์ด" };//์ด๋ฆ„ ๋ฐฐ์—ด๊ณผ ์„ ์–ธ์„ ๋™์‹œ์— ํ•จ 
	int score[STUDENT][SUBJECT + 2] = { {78, 90,34, 46,80},
		{98, 74,84, 76,72},
		{76, 48,34, 72,89},
		{61, 91,67, 88,83} };//2์ฐจ์› ์ •์ˆ˜๋ฐฐ์—ด ์„ ์–ธ 

	int i, j, sum = 0, row, col;//๋ณ€์ˆ˜์„ ์–ธ 

	row = STUDENT;//ํ•™์ƒ์„ ํ–‰์— ์ €์žฅ
	col = SUBJECT + 2;//๊ณผ๋ชฉ+2๋ฅผ ์—ด์— ์ €์žฅ

	for (i = 0; i < row; i++)//0๋ถ€ํ„ฐ 3๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€
	{
		for (j = 0; j < col - 2; j++)//0๋ถ€ํ„ฐ ์—ด-2๊นŒ์ง€ 
		{
			score[i][SUBJECT] += score[i][j]; //๊ณผ๋ชฉ์ ์ˆ˜๋Š” ๊ณผ๋ชฉ์ ์ˆ˜ +์ ์ˆ˜
		}
		score[i][SUBJECT + 1] = score[i][SUBJECT] / SUBJECT;
	}


	heading();
	for (i = 0; i < row; i++)
	{
		printf("%5s, ", names[i]);
		for (j = 0; j < col; j++)
		{
			printf("%3d, ", score[i][j]);
		}
		printf("\n");
	}

	return 0;
}

void heading()
{
	printf("========================================\n");
	printf("์„ฑ๋ช… ๊ตญ์–ด ์˜์–ด ์ˆ˜ํ•™ ๊ณผํ•™ ์‚ฌํšŒ ์ด์  ํ‰๊ท  \n");
	printf("========================================\n");
}

๐Ÿ”ฝ

Level3_1c

#include<stdio.h>

int main()
{
	int mat1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };	   //๋ฐฐ์—ด์„ ์–ธ	
	int mat2[4][3] = { 13,14,15,16,17,18,19,20,21,22,23,24 };
	int matrix[3][3] = { 0 };
	int i, j, sum1 = 0, sum2 = 0, sum3 = 0;
	for (i = 0; i < 3; i++) //0๋ถ€ํ„ฐ 2๊นŒ์ง€ 
	{
		for (j = 0; j < 4; j++)	//0๋ถ€ํ„ฐ 3๊นŒ์ง€ i๊ฐ€ 0์ผ๋•Œ j๋Š” 0~3๊นŒ์ง€ i๊ฐ€ 1์ผ๋•Œ j๋Š” 0~3๊นŒ์ง€
		{
			//ํ–‰๋ ฌ ๊ณ„์‚ฐ
			sum1 += mat1[i][j] * mat2[j][0];  //sum1=sum1(mat1[i][j] * mat2[j][0])
			sum2 += mat1[i][j] * mat2[j][1];  //sum2=sum1(mat1[i][j] * mat2[j][1])
			sum3 += mat1[i][j] * mat2[j][2];  //sum3=sum1(mat1[i][j] * mat2[j][2])
		}
		//matrix ๋ฐฐ์—ด์— ํ•ฉ ๋Œ€์ž…
		matrix[i][0] = sum1;  //sum1์„ matrix[i][0]์— ์ €์žฅ
		matrix[i][1] = sum2;  //sum2์„ matrix[i][1]์— ์ €์žฅ
		matrix[i][2] = sum3;  //sum3์„ matrix[i][2]์— ์ €์žฅ
		sum1 = sum2 = sum3 = 0;

		printf("sum : %d, %d, %d \n", sum1, sum2, sum3);
		sum1 = 0, sum2 = 0, sum3 = 0;
	}

	printf("3*4 mat1 ํ–‰๋ ฌ \n");
	for (i = 0; i < 3; i++)	 //i๋Š” 0~2๊นŒ์ง€
	{
		for (j = 0; j < 4; j++)	 //j๋Š” 0์—์„œ 3๊นŒ์ง€ //i๊ฐ€ 0์ผ๋•Œ j๋Š” 0~3, i๊ฐ€ 1์ผ๋•Œ j๋Š” 0~3...
		{
			printf("%3d, ", mat1[i][j]);   //์ •์ˆ˜๋ฅผ 3์นธ์— ๋งž๊ฒŒ ์ถœ๋ ฅ
		}
		printf("\n"); //์ถœ๋ ฅ //4ํ–‰3์—ด์ด ์™„์„ฑ๋จ 0๋ถ€ํ„ฐ 12๊นŒ์ง€
	}

	printf("\n4*3 mat2 ํ–‰๋ ฌ \n");
	for (i = 0; i < 4; i++)	  //i๋Š” 0~3๊นŒ์ง€
	{
		for (j = 0; j < 3; j++)	  //j๋Š” 0~2๊นŒ์ง€ 
		{
			printf("%3d, ", mat2[i][j]); //์ •์ˆ˜๋ฅผ 3์นธ์— ๋งž๊ฒŒ ์ถœ๋ ฅ
		}
		printf("\n");				//ํ•˜๋ฉด 3ํ–‰ 4์—ด์ด ์™„์„ฑ๋จ	13๋ถ€ํ„ฐ 24๊นŒ์ง€
	}
	printf("\nmat1*mat2์„ ๊ณฑํ•˜์—ฌ 3*3์„ ๊ตฌํ•œ matrix ํ–‰๋ ฌ \n"); //ํ–‰๋ ฌ๊ณฑ์…ˆ
	for (i = 0; i < 3; i++)	  //0~2๊นŒ์ง€ 	 
	{
		for (j = 0; j < 3; j++)//0์—์„œ 2๊นŒ์ง€ 
		{
			printf("%3d, ", matrix[i][j]);
		}
		printf("\n");					 //1ํ–‰1์—ด์€ 13+32+57+88ํ•˜๋ฉด 190	1ํ–‰2์—ด์€ 14+34+60+92ํ•˜๋ฉด 200์ด๋Ÿฐ์‹์œผ๋กœ 3*3ํ–‰๋ ฌ ์™„์„ฑ
	}

	return 0;
}

๐Ÿ”ฝ

Level3_2c

//์ž…๋ ฅ๋œ ๋‚ ์งœ์˜ ์š”์ผ ๊ตฌํ•˜๊ธฐ
#include<stdio.h>

int dayStartFunc(int year, int mon, int day);

int main()
{
	int inputDate, year, month, day;
	int dayStart;//๋‹ฌ์˜ ๋‚ ์งœ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์š”์ผ

	char days[7] [10] = { "์ผ","์›”","ํ™”","์ˆ˜","๋ชฉ","๊ธˆ","ํ† " };

	printf("๋‚ ์งœ(yyyymmdd) : ");
	scanf("%d", &inputDate);//20170305 ์ž…๋ ฅ

	year = inputDate / 10000;//2020		//์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆ„๋ฉด ๋…„๋„
	month = (inputDate % 10000) / 100; //6 //์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆˆ ๊ฐ’์— 100์„ ๋‚˜๋ˆ„๋ฉด ์›”
	day = (inputDate % 10000) % 100;//9		//์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์— 100์„ ๋‚˜๋ˆ„๋ฉด ์ผ 

	printf("year: %d, month:%d, day:%d \n", year, month, day);

	dayStart = dayStartFunc(year, month, day);
	//์ž…๋ ฅ๋œ ๋‚ ์ž์˜ ์ผ์ˆ˜ ๊ณ„์‚ฐํ•จ์ˆ˜ ํ˜ธ์ถœ

	printf("\n%d๋…„ %d์›” %d์ผ์€, %s์š”์ผ\n", year, month, day, days[dayStart % 7]);//์š”์ผ์ถœ๋ ฅ  //7๋กœ ๋‚˜๋ˆด์„๋•Œ 0์ด๋ฉด ์ผ์š”์ผ ์•„๋‹ˆ๋ฉด ๊ธฐ์ค€์ผ +1์˜ ์š”์ผ์ด ๋‚˜์˜ด

	return 0;
}		   //2020, 6, 9

int dayStartFunc(int year, int mon, int day)
{
	//์œค๋…„์•„๋‹ ๋•Œ ์›”๋ณ„ ์ผ์ž
	int yearMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };   //๋ฐฐ์—ด์„ ์–ธ
	int i, t_day;

	t_day = (year - 1) * 365;//2019๋…„๊นŒ์ง€ ์ผ์ž //t_day๋Š” (year - 1) * 365๋กœ ๊ณ„์‚ฐ

	for (i = 1; i < year; i++)//1~2019๊นŒ์ง€ ์œค๋…„ ํ™•์ธ //i๋Š” 1๋ถ€ํ„ฐ ๋…„๋„ ๊นŒ์ง€
	{
		if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))	//๋งŒ์•ฝ i๋ฅผ 4๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  100์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ i๋ฅผ 400์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ผ๋ฉด
			t_day++;//์œค๋…„์€ 366์ผ์ด๋ฏ€๋กœ ํ•˜๋ฃจ ๋”ํ•จ
	}
	for (i = 0; i < mon; i++)	//i๋Š” 0๋ถ€ํ„ฐ ์›” ๊นŒ์ง€
	{
		if(((year%4==0&&year%100!=0)||(year%400==0))&&(i==2))//๋…„๋„๋ฅผ 4๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  100์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ 0์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋…„๋„๋ฅผ 400์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  i๊ฐ€ 2์ผ๋•Œ
			t_day+=29; //t_day=t_day+29
		else		   //๋˜๋Š”
			t_day+=yearMonth[i]; //t_day=t_day+yearMonth[i]๊ณ„์‚ฐ
	}

	return t_day+day;
		//๋…„,์ „ ์›” ๊นŒ์ง€์˜ ํ•ฉ๊ณผ ํ˜„์žฌ๋‹ฌ์˜ ์ผ์ž ๋”ํ•˜์—ฌ ๋ฐ˜ํ™˜

๐Ÿ”ฝ

9์žฅ ์—ฐ์Šต๋ฌธ์ œ ์ฝ”๋”ฉ ๋ฌธ์ œ ํ’€์ด, ๋…ผ๋ฆฌ ๋ถ„์„(๊ฐ์ฃผ)7

9-5

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{
	int i, index, num;
	int tmp[10]={0}; //์ž…๋ ฅํ•œ ์ˆ˜์˜ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด

	for(i=0; i<10; i++) 
	{
		do{
		  printf("%d, ๊ฐ’ ์ž…๋ ฅ ? (0~ 9) ", i+1);
		  scanf("%d", &num);   // ์ •์ˆ˜ 0~9๋ฅผ ์ž…๋ ฅ
	  }while(num<0 || num>9);

 	  ++tmp[num];
	}

	index=0;
	for(i=0; i<10; i++) 
	{
		if(tmp[index]< tmp[i])
		   index=i;
	}
	printf("\n๊ฐ€์žฅ ๋งŽ์ด ์ž…๋ ฅํ•œ ์ˆ˜ : %d, ํšŸ์ˆ˜ :%d \n",
	                     index, tmp[index]);
	return 0;
}

9-6

#include <stdio.h>

int main(void)
{
      int a[3][3]={{13, 4, 30},
		    {34, 2, 5},
		    {7, 15, 27}};
      int b[3][3], i, j;

	printf("a ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ \n");
	for(i=0;i<3; i++)
	{
		for(j=0;j<3;j++)
			printf("%5d", a[i][j]);
      printf("\n");
   }

//a ๋ฐฐ์—ด์„ ์ „์น˜ํ–‰๋ ฌ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ b ๋ฐฐ์—ด์— ์ €์žฅ
	for(i=0;i<3; i++)
		for(j=0;j<3;j++)
			b[j][i] = a[i][j];


	printf("\n์ „์น˜ํ–‰์—ด b ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ \n");
	for(i=0;i<3; i++)
	{
		for(j=0;j<3;j++)
			printf("%5d", b[i][j]);
      printf("\n");
   }
}

9-7

#include <stdio.h>

int main()
{
   int num[7][7]={0} , i, j, k=0;

	for(i=0;i<7; i++)
	   for(j=0;j<7;j++)
	   {
		k++;
		if(j <(i+1))
	          num[i][j]=k;
          }

	for(i=0;i<7; i++)
	{
		for(j=0;j<=i;j++)
			printf("%5d", num[i][j]);
            printf("\n");
   }
   return 0 ;
}

9-8

// <9-8>
#include <stdio.h>
#include <string.h>

int main(void)
{
    char names[10][20] = { "kim","lee","sin","jo","kim2",
                       "chae","jin","bak","so","chol" };
    int i, j;
    char tmp[20];

    printf("\n๋ฐฐ์—ด ์ดˆ๊ธฐํ™”\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    for (i = 0; i < 9; i++)
        for (j = 0; j < 9 - i; j++)
            if (strcmp(names[j], names[j + 1]) > 0)
            {
                strcpy(tmp, names[j]);
                strcpy(names[j], names[j + 1]);
                strcpy(names[j + 1], tmp);
            }

    printf("\nSorted Result\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    return 0;
}

10์žฅ WorkBook ํ’€์ด, ๋…ผ๋ฆฌ ๋ถ„์„(๊ฐ์ฃผ)

10์žฅ workbook 3-1

// 10์žฅ ์›Œํฌ๋ถ  3-1 ํ’€์ด 

#include <stdio.h>

int main()
{
	char str[50] = "Multi Campus.", tmp[50]; // ๋ฌธ์ž์—ด ๋ฐฐ์—ด ์ƒ์„ฑ 
	char *from, *to; // str ๋ฐฐ์—ด์„ tmp๋กœ ๋ณต์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ํฌ์ธํ„ฐ ์ƒ์„ฑ

	from = str; // ํฌ์ธํ„ฐ์™€ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ (๊ฐ ํฌ์ธํ„ฐ๋“ค์„ ๋ฐฐ์—ด์— ์—ฐ๊ฒฐ) // str ์ฃผ์†Œ ์ €์žฅ
	to = tmp; // tmp ์ฃผ์†Œ ์ €์žฅ 

	while (*from != '\0')//๋ฐ˜๋ณตํ•  ์กฐ๊ฑด // *from๊ณผ '\0' ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฐธ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“, ์ฆ‰ null ๊นŒ์ง€ ๊ฐ€๋ฉด while๋ฌธ ์ข…๋ฃŒ 
	{
		*to++ = *from++; 

	}

	*to = '\0'; // null ๋ฌธ์ž ์ถ”๊ฐ€ ('\0'์€ ์“ฐ๋ ˆ๊ธฐ๊ฐ’ null์„ ์˜๋ฏธ) 

	printf("str: %s, tmp: %s \n", str, tmp);

	return 0; 
}


10์žฅ ์›Œํฌ๋ถ 2-1 ํ’€์ด

// 10์žฅ ์›Œํฌ๋ถ 2-1 ํ’€์ด 

#include <stdio.h>

int main() 
{
	char msg[100] = "Hello World !!!"; 
	char* ptr = msg; 

	printf("msg : %s \n", msg); 

	while (*ptr)
	{
		printf("%c, ", *ptr);
		ptr++;  
	}

	printf("\n"); 

	return 0; 
}

10์žฅ ์—ฐ์Šต๋ฌธ์ œ ์ฝ”๋”ฉ ๋ฌธ์ œ ํ’€์ด, ๋…ผ๋ฆฌ ๋ถ„์„(๊ฐ์ฃผ)

10-5

int, float, double ๊ฐ™์€ ์ž๋ฃŒํ˜•์€ ์ž๋ฃŒํ˜• ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฃŒํ˜•์„ ์ž…๋ ฅ๋ฐ›๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ,
char, char[]ํ˜•ํƒœ์ธ ๋ฌธ์ž, ๋ฌธ์ž์—ด์—์„œ๋Š” ์ž…๋ ฅ๋ฐ›์„ ํฌ๊ธฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋’ค์— ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
scanf_s("%s", ๋ฌธ์ž์—ด๋ณ€์ˆ˜๋ช…, sizeof(๋ฌธ์ž์—ด๋ณ€์ˆ˜๋ช…)); ์„ ์จ์ฃผ์‹œ๋ฉด ์ž…๋ ฅ๋ฐ›์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// 10์žฅ ์—ฐ์Šต๋ฌธ์ œ 10-5 

#include <stdio.h>
#define LENGTH 12 // ์ตœ๋Œ€ 12์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค 

int main()
{
	int i, len = 0; 
	int cn = 0;
	char str[LENGTH];

	printf("input string :");
	// %[^\n]s => scanf_s ํ•จ์ˆ˜์—์„œ ๊ณต๋ฐฑ์„ ํฌํ•จํ•ด ์ž…๋ ฅ ๋ฐ›์Œ (๋„์–ด์“ฐ๊ธฐ๋ฅผ ์—†์•ฐ)  
	// %s๋ผ๊ณ ๋งŒ ์ ์œผ๋ฉด ๊ณต๋ฐฑ์„ ๊ตฌ๋ถ„์ž๋กœ ๋ด์„œ ์ž…๋ ฅ์„ ๊ณต๋ฐฑ๊นŒ์ง€๋งŒ ๋ฐ›์Œ (C๋งŒ ์ถœ๋ ฅ)
	// ์•„๋ž˜์™€ ๊ฐ™์ด 'ํ˜•์‹ ์ง€์ •์ž'๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๊ณต๋ฐฑ ํฌํ•จ ์ž…๋ ฅ ๋ฐ›์Œ 
	scanf_s("%[^\n]s", str, LENGTH - 1); 

	// NULL ๋ฌธ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ด๋™ , ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ str ๋ฐฐ์—ด์— ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
	while (str[len] != 0)
		len++; 

	// str ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฌธ์ž์—ด์„ ๊ฑฐ๊พธ๋กœ ์ถœ๋ ฅ 
	// len -1 ์—์„œ ์‹œ์ž‘ํ•ด์„œ 1์”ฉ ๊ฐ์†Œ
	// i ๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ 
	printf("์ถœ๋ ฅ : \n");
	for (i = len - 1; i >= 0; --i)
	{
		printf("%c", str[i]); // ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅ 
		cn++; 
	}
	// ์ค„๋ฐ”๊ฟˆ 
	printf("\n");

	printf("๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ: %d", cn);

	return 0; 
}

ref. https://blog.naver.com/PostView.nhn?blogId=tipsware&logNo=221272901635&redirect=Dlog&widgetTypeCall=true&directAccess=false

10-7

// <10 - 7>
#include <stdio.h>

int main(void)
{
	char str[50] = "Multi Campus.";
	char* ptr;

	printf("before : %s\n", str);

	for (ptr = str; *ptr; ++ptr)
	{
		if ('a' <= *ptr && *ptr <= 'z')
			*ptr -= 32;
		else if ('A' <= *ptr && *ptr <= 'Z')
			*ptr += 32;
	}

	printf("after : %s\n", str);

	return 0;
} 
10์žฅ workbook 2-1
// 10์žฅ ์›Œํฌ๋ถ 2-1 ํ’€์ด 

#include <stdio.h>

int main() 
{
	char msg[100] = "Hello World !!!"; 
	char* ptr = msg; 

	printf("msg : %s \n", msg); 

	while (*ptr)
	{
		printf("%c, ", *ptr);
		ptr++;  
	}

	printf("\n"); 

	return 0; 
}
profile
heejoojeon@daou.co.kr

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN