printf("ho_tari\n");
C언어(3) 본문
2025.02.20
Git 설치
git-scm.com → 64bit Git for Windows setup download
1. github에서 저장소 생성
2. git초기화 : git init > .git 폴더가 생성됨 (rm -rf .git으로 삭제 가능)
3. 트렁크에 파일 담기 : git add .
4. 보낼 주소 등록 : git remote add origin https://github.com/아이디/저장소.git
5. 태크 확인 : git remote -v
6. 설명문 추가 : git commit -m "메시지"
7. 보내기 : git push origin master
파일 내용 수정 시 수정 된 내용 표시 : git status
수정 업로드 위해선 3, 6, 7번 작업 수행
branch 새로 추가 : git branch "이름"
branch 바꾸기 : git switch 새로운branch이름
코드 원래대로 복구
visual studio에서 branch 선택 가능
git clone 방법
로컬 Windows 디버거
포인터는 배열과 동등하다.
자신의 공간을 가지고 있지 않다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//int s; // 전역변수
// 함수 선언 (function prototype)
int func(int, int);
void main(void) {
int sum;
sum = func(7, 3); // 함수 호출입니다.
printf("sum = %d\n", sum);
sum = func(3, 4); // 함수 호출입니다.
printf("sum = %d\n", sum);
}
// 함수 정의(구현) 부분입니다.
int func(int v, int w) {
static int s = 0; // 전역변수와 동일한 기능 static
s += (v + w);
return s;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
double average(double a, double b);
void main(void) {
double res;
res = average(1.5, 3.4);
printf("%f", res);
}
double average(double a, double b) {
double temp;
temp = a + b;
return (temp / 2.0);
}*/
/*
double centi_to_meter(int cm);
int main(void) {
double res;
res = centi_to_meter(187);
printf("%.2lfm\n", res);
return 0;
}
double centi_to_meter(int cm) {
double result;
result = (double)cm / 100.0;
return result;
}*/
/*
// 함수 선언 (function prototype)
int get_num(void);
int main(void) {
int result;
result = get_num();
printf("반환값 : %d\n", result);
return 0;
}
int get_num(void) {
int num;
printf("양수 입력 : ");
scanf("%d", &num);
return num;
}
*/
/*
void print_char(char ch, int count);
int main(void) {
print_char('@', 5);
return 0;
}
void print_char(char ch, int count) {
int i;
for (i = 0; i < count; i++)
{
printf("%c", ch);
}
return 0;
}*/
/*
void fruit(int count);
int main(void) {
fruit(1);
return 0;
}
void fruit(int count) {
printf("apple\n");
if (count == 3) return;
fruit(count+1);
printf("jam\n");
}*/
/*
int sum(int num);
int main(void) {
sum(10);
sum(100);
return 0;
}
int sum(int num) {
int i;
int result = 0;
for (i = 1; i <= num; i++)
{
result += i;
}
printf("1부터 %d까지의 합은 %d입니다.\n", num, result);
}*/
/*
int func(int n);
int poly(int n);
int main(void) {
printf("%d\n", func(-3));
return 0;
}
int func(int n) {
int res;
res = poly(n);
if (res >= 0) return res;
else return -res;
}
int poly(int n) {
return ((2 * n * n) + (3 * n));
}*/
/*
int rec_func(int n);
int main(void) {
int result = rec_func(10);
printf("%d", result);
return 0;
}
int rec_func(int n) {
if (n == 1) return 1;
return rec_func(n - 1) + n;
}*/
/*
int factorial(int n);
int main(void) {
int result = factorial(5);
printf("%d", result);
return 0;
}
int factorial(int n) {
if (n == 1) return 1;
return factorial(n - 1) * n;
}*/
/*
int main(void) {
int ary[5];
ary[0] = 10;
ary[1] = 20;
ary[2] = ary[0] + ary[1];
scanf("%d", &ary[3]);
printf("%d\n", ary[2]);
printf("%d\n", ary[3]);
printf("%d\n", ary[4]);
return 0;
}*/
/*
int main(void) {
int score[5];
int i;
int total = 0;
double avg;
for (i = 0; i < 5; i++)
{
scanf("%d", &score[i]);
}
for (i = 0; i < 5; i++)
{
total += score[i];
}
avg = total / 5.0;
for (i = 0; i < 5; i++)
{
printf("%5d", score[i]);
}
printf("\n");
printf("평균 : %.1lf\n", avg);
return 0;
}*/
/*
int main(void) {
int score[5];
int i;
int total = 0;
double avg;
int count;
count = sizeof(score) / sizeof(score[0]);
for (i = 0; i < count; i++)
{
scanf("%d", &score[i]);
}
for (i = 0; i < count; i++)
{
total += score[i];
}
avg = total / (double)count;
for (i = 0; i < count; i++)
{
printf("%5d", score[i]);
}
printf("\n");
printf("평균 : %.1lf\n", avg);
return 0;
}*/
/*
int main(void) {
int ary[5];
double ary2[10];
int ary3[] = { 0, 0, 0 };
char ary4[5];
}*/
/*
int main(void) {
int array[6] = { 1, 2, 3 };
}*/
/*
int main(void) {
int A[3] = { 1, 2, 3 };
int B[10];
int i;
// 복사
for (i = 0; i < 10; i++)
{
B[i] = A[i % 3];
}
// 출력
for (i = 0; i < 10; i++)
{
printf("%3d", B[i]);
}
return 0;
}*/
/*
int main(void) {
char str[12] = { "Hello world" };
str[5] = 0; // 0 = \0
printf(str);
return 0;
}*/
/*
void print(char inText[]) {
int i = 0;
while (1) {
if (inText[i] == 0) return;
putchar(inText[i]);
i++;
}
}*/
/*
int main(void) {
char str[80] = "applejam";
// print(str);
printf("최초 문자열 : %s\n", str);
printf("문자열 입력 : ");
scanf("%s", str);
str[5] = '_';
printf("입력 후 문자열 : %s\n", str);
return 0;
}
*/
/*
int main(void) {
char str1[80] = "cat";
char str2[80];
// strcpy(str1, "tiger");
// strcpy(str2, str1);
sprintf(str1, "%s and tiger", str1);
sprintf(str2, str1);
printf("%s, %s\n", str1, str2);
return 0;
}*/
/*
int main(void) {
char str[80];
printf("문자열 입력 : ");
gets(str); // 공백까지도 입력 받을 수 있음
puts("입력된 문자열 : ");
puts(str);
return 0;
}*/
#include <string.h>
/*
int main(void) {
char str1[80], str2[80];
char temp[80];
printf("두 문자열 입력 : ");
scanf("%s %s", str1, str2);
printf("바꾸기 전 : %s, %s\n", str1, str2);
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
printf("바꾼 후 : %s, %s\n", str1, str2);
return 0;
}*/
/*
int main(void) {
char inStr[80];
char outStr[80] = { 0 };
int count = 0;
printf("문장 입력 : ");
gets(inStr);
for (int i = 0; i < strlen(inStr); i++)
{
if (inStr[i] >= 'A' && inStr[i] <= 'Z')
{
count++;
outStr[i] = inStr[i] + 32; // 'A'의 아스키 코드는 65, 'a'의 아스키코드는 97, 97 - 65 = 32
}
else
{
outStr[i] = inStr[i];
}
}
printf("바뀐 문장 : %s\n바뀐 문자 수 : %d", outStr, count);
return 0;
}
*/
/*
int main(void) {
char a[4];
int b;
b = 0x12345678;
memcpy(a, &b, 4);
printf("%x", a[0]);
return 0;
}*/
/*
int main(void) {
int a;
int* pa;
pa = &a;
*pa = 10;
printf("포인터로 a 값 출력 : %d\n", *pa);
printf("변수명으로 a 값 출력 : %d\n", a);
return 0;
}*/
/*
int main(void) {
int a;
int* b;
b = &a;
a = 10;
printf("%d, %d", a, *b);
return 0;
}*/
/*
int main(void) {
int a;
int* b;
b = &a;
scanf("%d", b);
printf("%d, %d", a, *b);
return 0;
}*/
/*
int main(void) {
char ch;
int in;
double db;
char* pc = &ch;
int* pi = ∈
double* pd = &db;
printf("char형 변수의 주소 크기 : %d\n", sizeof(&ch));
printf("int형 변수의 주소 크기 : %d\n", sizeof(&in));
printf("double형 변수의 주소 크기 : %d\n", sizeof(&db));
printf("char * 포인터의 크기 : %d\n", sizeof(pc));
printf("in * 포인터의 크기 : %d\n", sizeof(pi));
printf("double * 포인터의 크기 : %d\n", sizeof(pd));
printf("char * 포인터가 가르키는 변수의 크기 : %d\n", sizeof(*pc));
printf("int * 포인터가 가르키는 변수의 크기 : %d\n", sizeof(*pi));
printf("double * 포인터가 가르키는 변수의 크기 : %d\n", sizeof(*pd));
return 0;
}*/
/*
void swap(int* pa, int* pb);
int main(void) {
int a = 10, b = 20;
swap(&a, &b); // 포인터가 받으려고 하는거면 주소를 보내야 한다.
printf("a : %d, b : %d\n", a, b);
return 0;
}
void swap(int* pa, int* pb) {
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
*/
/*
int main(void) {
int a = 10, b = 20;
int* pa = &a, * pb = &b, *pt;
pt = pa;
pa = pb;
pb = pt;
printf("%d, %d", *pa, *pb);
return 0;
}*/
/*
void swap(double* pa, double* pb);
void line_up(double* maxp, double* midp, double* minp);
int main(void) {
double max, mid, min;
printf("실수값 3개 입력 : ");
scanf("%lf%lf%lf", &max, &mid, &min);
line_up(&max, &mid, &min);
printf("정렬된 값 출력 : %.1lf, %.1lf, %.1lf\n", max, mid, min);
return 0;
}
void swap(double* pa, double* pb) {
double temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
void line_up(double* maxp, double* midp, double* minp) {
if (*maxp < *midp)
{
swap(maxp, midp);
}
if (*maxp < *minp)
{
swap(maxp, minp);
}
if (*midp < *minp)
{
swap(midp, minp);
}
}*/