๐Ÿคณ [C]_23.03.22

โ€์ „ํฌ์ฃผยท2023๋…„ 3์›” 22์ผ
0

๋‹ค์šฐ_C ์ž…๋ฌธ ๊ฐ•์˜

๋ชฉ๋ก ๋ณด๊ธฐ
3/7

๊ตฌ์กฐ์ฒด

10-9.c

//// 10-9 ํ’€์ด 
//
//
//#define _CRT_SECURE_NO_WARNINGS    // strcpy, strcat ๋ณด์•ˆ ๊ฒฝ๊ณ ๋กœ ์ธํ•œ ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐฉ์ง€
//#include <stdio.h>
//#include <string.h>    // strcpy, strcat ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ํ—ค๋” ํŒŒ์ผ
//
//
//int main()
//{
//    char s1[10] = "world";                  // ํฌ๊ธฐ๊ฐ€ 10์ธ charํ˜• ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ๋ฌธ์ž์—ด ํ• ๋‹น
//    char* s2 = malloc(sizeof(char) * 20);    // char 20๊ฐœ ํฌ๊ธฐ๋งŒํผ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
//
//    strcpy(s2, "Hello");   // s2์— Hello ๋ฌธ์ž์—ด ๋ณต์‚ฌ
//
//    strcat(s2, s1);        // s2 ๋’ค์— s1์„ ๋ถ™์ž„
//
//    printf("%s\n", s2);    // Helloworld
//
//
//    return 0;
//}


#include <stdio.h>

void my_Strcat(char* dest, char* source);

int main() {
	char strDestination[20] = "king";
	char strSource[20] = "dom";

	my_Strcat(strDestination, strSource);

	printf("Source: %s ,  Destination: %s\n", strSource, strDestination);
}

void my_Strcat(char* dest, char* source) {
	for (; *dest; dest++);
	for (; *source; dest++, source++) {
		*dest = *source;
	}
	*dest = '\0';
}


11_9.c

//11_9.c
#include<stdio.h>

struct EMP {
	char name[20];
	int age;
	int salary; 

}emps[4] = { {"์ง„๋‹ฌ๋ž˜", 20, 500000}, {"๊ฐœ๋‚˜๋ฆฌ", 23, 600000}, {"๊นŒ๊ฟ์ด", 27, 700000}, {'\0'}}; //๋ฐฐ์—ด์„ ์ „์—ญ์œผ๋กœ ์„ ์–ธ 

 
// struct emp* ptr; // *ptr; 


int main()  
{
	struct EMP* ptr, tmp;
	ptr = emps; //๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋Š” ๋ฉค๋ฒ„๋“ค์˜ ์ง‘ํ•ฉ 

	//while (*ptr->name) // ์ฃผ์†Œ๋Š” ํ•ญ์ƒ ์ฐธ์ด๋ฏ€๋กœ ๋ฌดํ•œ๋ฃจํ”„, null์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€๋งŒ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๋ฐฐ์—ด์˜ ํŠน์ • ์ฒจ์ž(๊ฐ’) ์ง€์ • ํ•„ => emps ๋ฐฐ์—ด์˜ ํŠน์ • ์ธ์ˆ˜(๊ฐ’)๊ฐ€ null ์ด๋ฉด break+)  ptr->name => (*ptr).name => emps.name 
	//while (*((*ptr)).name != '\0'){ // while(0) ์ด๋ฉด break  // *((*ptr)).name != '\0'
	
	/*while (*(*ptr).name)
	{
		printf("%s, %d, %d \n", ptr->name, ptr->age, ptr->salary);
		ptr++;
	}
	*/
	
	/*while (*ptr->name) {
		printf("%s, %d, %d \n",
			ptr->name, ptr->age, ptr->salary); //emp ๋ฐฐ์—ด ์ถœ๋ ฅ 
		ptr++; //๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์˜ ์ƒˆ๋กœ์šด ์—ด์˜ ๋ฐ์ดํ„ฐ ์‹œ์ž‘์ฃผ์†Œ ํ• ๋‹นํ†ตํ•œ emp๋ฉค๋ฒ„ ์ˆœ์ฐจ ์ถœ๋ ฅ => emp[0], emp[1],,,
	}
	
	ptr = emps; 
	tmp = *ptr; 
	// printf("%s, %d, %d \n",tmp.name, tmp.age, tmp.salary);

	return 0; 

}
*/

//
//#include <stdio.h>
//int main()
//{
//	struct EMP {
//		char name[20];
//		int age;
//		int salary;
//	} emps[4] = { {"์ง„๋‹ฌ๋ž˜", 20, 500000},
//	{"๊ฐœ๋‚˜๋ฆฌ", 23, 600000},
//	{"๊นŒ๊ฟ์ด", 17, 700000},{NULL} };
//	struct EMP* ptr;
//
//
//	ptr = emps;
//	printf("\n");
//
//	while (*ptr->name)
//	{
//		printf("%s, %d, %d \n", ptr->name, ptr->age, ptr->salary);
//		ptr++;
//	}
//	printf("\n");
//	return 0;
//}
//
//

struct1.c

//struct1.c

#include <stdio.h>

// ๊ตฌ์กฐ์ฒด(Struct) : ๊ด€๋ จ์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋“ค์„ ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค. 
// ์ฆ‰, ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. 
// ๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ์€ ์ž๋ฃŒํ˜•์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์Œ. 
int main()
{
	// ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•์„ ์„ ์–ธ 
	// DB์˜ create table๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ(field) 
	// struct ๊ตฌ์กฐ์ฒด ์ด๋ฆ„ {๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„๋“ค}; 
	/*struct EMPLOYEE {
		char name[20]; //๊ตฌ์กฐ์ฒด๋Š” ๋ฉค๋ฒ„์˜ ์ง‘ํ•ฉ 
		int salary; 
		float height; 
		char comAddr[50]; 

	} ;
	*/

	// typedef ํ†ตํ•ด ๊ตฌ์กฐ์ฒด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ •์˜ 
	// ํƒœ๊ทธ๋„ค์ž„์ธ `EMPLOYEE` ์ƒ๋žต ๊ฐ€๋Šฅ(์ž๋ฃŒํ˜• ๋ช…์ด EMP๋กœ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ)
	typedef struct EMPLOYEE 
	{
		char name[20]; //๊ตฌ์กฐ์ฒด๋Š” ๋ฉค๋ฒ„์˜ ์ง‘ํ•ฉ 
		int salary;
		float height;
		char comAddr[60];

	} EMP;
	// ๊ตฌ์กฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” ๋ˆˆ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค (๋‹จ์ˆœ ์‚ฐ์‹) ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋‹ค => sizeof ์‚ฌ์šฉ์œผ๋กœ ํ™•์ธ ํ•„ 
	 
	//์ž๋ฃŒํ˜•๋ช…      //๊ตฌ์กฐ์ฒด๋ณ€์ˆ˜
	struct EMPLOYEE emp = { "ํ™๊ธธ๋™", 4500000, 173.5, "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ" };
	

	EMP tmp; 

	printf("%d, %d \n", sizeof(emp), sizeof(struct EMPLOYEE)); 
	printf("%p, %p \n", &emp, emp.name); // ๊ตฌ์กฐ์ฒด๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ๊ฐ’ ์•„๋‹˜ => & ์‚ฌ์šฉํ•„ ,๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์˜ ์‹œ์ž‘์ฃผ์†Œ(์ฒจ์ž๊ฐ€ ์—†๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜๋ช…)

	/*printf("์„ฑ๋ช… ? ");
	gets(emp.name); //๊ณต๋ฐฑ์„ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด gets() ์‚ฌ์šฉ 

	printf("์›”๊ธ‰ ? ");
	scanf_s("%d", &emp.salary); //์ •์ˆ˜, ์‹ค์ˆ˜๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด scanf_s() ์‚ฌ์šฉ  
	// ์ฃผ์†Œ ๋Œ€์ž… 

	printf("ํ‚ค(์‹ ์žฅ) ? ");
	scanf_s("%f%*c", &emp.height);

	printf("ํšŒ์‚ฌ ์ฃผ์†Œ ? ");
	gets(emp.comAddr);
	*/ 

	//๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์ด๋ฆ„.๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์˜ ์ด๋ฆ„
	printf("%s, %d, %.2f, %s \n",
		emp.name, emp.salary, emp.height, emp.comAddr); //์ฃผ์†Œ๊ฐ€ ์•„๋‹˜, ๋ฐ์ดํ„ฐ ๊ฐ’์ž„
	 
	tmp = emp; 

	printf("%s, %d, %.2f, %s \n", 
		tmp.name, tmp.salary, tmp.height, tmp.comAddr); //์ฃผ์†Œ๊ฐ€ ์•„๋‹˜, ๋ฐ์ดํ„ฐ ๊ฐ’์ž„

	return 0; 
}

struct2.c

//struct2.c

#include <stdio.h>
#define EMP_SZ 30  

int main()
{
	
	typedef struct EMPLOYEE
	{
		char name[20]; //๊ตฌ์กฐ์ฒด๋Š” ๋ฉค๋ฒ„์˜ ์ง‘ํ•ฉ 
		int salary;
		float height;
		char comAddr[60];

	} EMP;
	
	struct EMPLOYEE emp[EMP_SZ]; 
	struct EMPLOYEE* ptr;
	int i, Cn; 

	for (i = 0; i < EMP_SZ; i++)
	{
		printf("์„ฑ๋ช… ? "); //kim
		gets(emp[i].name); //emp๋Š” 1์ฐจ์› ๋ฐฐ์—ด (์—ด์˜ ์ง‘ํ•ฉ์ž„)
		if (!strcmp(emp[i].name, "end"))
			break; 
		printf("์›”๊ธ‰ ? "); //1000
		scanf_s("%d", &emp[i].salary);
		printf("ํ‚ค(์‹ ์žฅ) ? "); //163
		scanf_s("%f%*c", &emp[i].height);
		printf("ํšŒ์‚ฌ ์ฃผ์†Œ ? "); //๋ถ€์‚ฐ์‹œ 
		gets(emp[i].comAddr); 


	}

	Cn = i; 
	ptr = emp; // ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ ์ €์žฅ (๋ฐฐ์—ด ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ๊ฐ’์ด๋‹ˆ `&`๊ธฐ์žฌ ๋ถˆํ•„์š”) 
	
	//๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด ์ถœ๋ ฅ ๋ฐ˜๋ณต๋ฌธ 
	for (i = 0; i < Cn; i++)
	{
		printf("%s, %d, %.2f, %s \n",
			ptr->name, ptr->salary, ptr->height, ptr->comAddr); //emp ๋ฐฐ์—ด ์ถœ๋ ฅ 
		ptr++; //๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์˜ ์ƒˆ๋กœ์šด ์—ด์˜ ๋ฐ์ดํ„ฐ ์‹œ์ž‘์ฃผ์†Œ ํ• ๋‹นํ†ตํ•œ emp๋ฉค๋ฒ„ ์ˆœ์ฐจ ์ถœ๋ ฅ => emp[0], emp[1],,,
	}
	return 0;

}

struct3.c

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


// ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•์„ ์„ ์–ธ -> ํ•จ์ˆ˜ ์•ˆ์— ๋งŒ๋“ค๋ฉด ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์ด์šฉ ๊ฐ€๋Šฅ  โˆด ๋ฐ–์—๋‹ค๊ฐ€ ์„ ์–ธ
typedef struct EMPLOYEE {
	char name[20];
	int salary;
	float height;
	char comAddr[60];
}emp;

void funcA(struct EMPLOYEE *emp);
struct EMPLOYEE funcB(); 

int main()
{
	struct EMPLOYEE emp = { "ํ™๊ธธ๋™", 4500000, 173.5, "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ" };
	struct EMPLOYEE my;

	funcA(&emp);
	printf("์‹ค์ธ์ˆ˜๋กœ ์ฃผ์†Œ ์ „๋‹ฌ() emps : % s, % d, % .2f, % s \n", emp.name, emp.salary, emp.height, emp.comAddr);

	my = funcB();

	printf("my : % s, % d, % .2f, % s \n", my.name, my.salary, my.height, my.comAddr);

	return 0;
}

struct EMPLOYEE funcB()
{
	struct EMPLOYEE tmp;

	tmp.salary = 370000;
	tmp.height = 163;

	*tmp.name = "์ง„๋‹ฌ๋ž˜";		// ๋ถˆ๊ฐ€ -> *tmp.name๋Š” 4000๋ฒˆ์ง€ (1๋ฐ”์ดํŠธ (char ํƒ€์ž…)) ์ฐธ์กฐ  =	 tmp.name[0] ๊ณผ ๋™์ผ  /   *tmp.name = 'A'; ๋Š” ๊ฐ€๋Šฅ
	strcpy(tmp.name, "์ง„๋‹ฌ๋ž˜");				// ๋ฐฐ์—ด ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ (ํฌ์ธํ„ฐ ์ƒ์ˆ˜)	/	 ํ•œ๊ธ€์€ 2๋ฐ”์ดํŠธ๋ผ ""์— ์จ์•ผ ํ•จ -> ""๋Š” ์ฃผ์†Œ
																// ์ฃผ์†Œ์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ๋„ฃ์„ ๊ฒƒ -> ํ•จ์ˆ˜ ์ž‘์„ฑ ํ˜น์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์šฉ
	strcpy(tmp.comAddr, "์ฐฝ์›์‹œ ์ง„ํ•ด ๋ฒš๊ฝƒ 100๋ฆฌ");

	//printf("funcB() emps : % s, % d, % .2f, % s \n", tmp.name, tmp.salary, tmp.height, tmp.comAddr);

	return tmp;
}

void funcA(struct EMPLOYEE *emp)		// EMP emp๋„ ๊ฐ€๋Šฅ
{
	printf("funcA() emps : % s, % d, % .2f, % s \n", emp->name, emp->salary, emp->height, emp->comAddr);
	// (*emp).name
	emp->salary += 200000;  
}

struct4.c

//struct4.c 


/* ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋‘์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์†Œ์Šค*/

//#include "stdio.h"
//#include "math.h"
//
//struct point
//{
//	int x;
//	int y;
//};
//
////๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ–๋Š” ํ•จ์ˆ˜ ์„ ์–ธ
//double Get(struct point* p1, struct point* p2)
//{
//	int dx = p2->x - p1->x;
//	int dy = p2->y - p1->y;
//	return sqrt((double)(dx * dx) + (double)(dy * dy));
//}
//
//int main()
//{
//	struct point p1 = { 430,170 };
//	struct point p2 = { 120,80 };
//	double distance;
//
//	distance = Get(&p1, &p2); // ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ Get ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค.
//
//	printf("๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ : %5.2f\n", distance);
//	return 0;
//}




#include <stdio.h>
#include <math.h>

struct Point
{
	double x;
	double y;
};

double Getdistance(struct Point p1, struct Point p2)
{
	double dist;

	dist = sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));

	return dist;
}

int main()
{
	double Distance;

	struct Point p1 = { 430, 170 };
	struct Point p2 = { 120, 80 };

	Distance = Getdistance(p1, p2);

	printf("๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ : %lf \n", Distance);

	return 0;
}


struct4.1.c

//struct4.1.c 

#include <stdio.h>

typedef struct EMPLOYEE {
	char name[20];
	int salary;
	float height;
	char comAddr[60];
}EMP;

int main()
{
	struct EMPLOYEE emp = { "ํ™๊ธธ๋™", 4500000, 173.5, "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ" }; //EMP emp = { "ํ™๊ธธ๋™", 4500000, 173.5, "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ" };
	struct EMPLOYEE* ptr; // EMP *ptr

	printf("%d, %d \n", sizeof(emp), sizeof(ptr));  //100byte, 4byte  // ptr : ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ 
	
	ptr = &emp; //๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋Š” &emp 

	// ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๋ ค๋ฉด โ€œ๊ตฌ์กฐ์ฒดํฌ์ธํ„ฐ๋ณ€์ˆ˜->๋ฉค๋ฒ„๋ช…โ€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. , `(*ptr).`๊ณผ ๊ฐ™์€ ์—ญํ•  ์ˆ˜ํ–‰ 
	printf("%s, %d, %.2f \n", ptr->name, ptr->salary,
								ptr->height, (*ptr).comAddr); // *(ptr+0) = ptr[0]  

	/* printf("%s, %d, %.2f \n", (*ptr).name, (*ptr).salary,
	(*ptr).height, (*ptr).comAddr);*/ 


}

ํŒŒ์ผ ์ž…์ถœ๋ ฅ

ref

// fgets(str, sizeof(str), fp);
// ํŒŒ์ผํฌ์ธํ„ฐ(fp)์™€ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ๋ฐ”์ดํŠธ ์ˆ˜์—๋”ฐ๋ผ
// ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ tmp๋กœ ์ฃผ์–ด์ง„๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.

ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ์ž‘์„ฑ ์ˆœ์„œ

  • ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ์ž‘์„ฑ ์ˆœ์„œ
    • โ‘ ํŒŒ์ผ ๋ช… ๋Œ€์‹  ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ์‚ฌ์šฉ
    • FILE *ํŒŒ์ผํฌ์ธํ„ฐ;
    • โ‘กํŒŒ์ผ์„ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ค‘ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ โ€œ๋ชจ๋“œโ€ ์— ๊ธฐ์ˆ ํ•˜๊ณ  ํŒŒ์ผ์„ ์—ด๊ธฐ
    • ํŒŒ์ผํฌ์ธํ„ฐ= fopen("ํŒŒ์ผ๋ช…โ€œ, โ€๋ชจ๋“œโ€œ);
    • โ‘ขํŒŒ์ผ์ฒ˜๋ฆฌ: ํŒŒ์ผ์ž…์ถœ๋ ฅ
    • โ‘ฃํŒŒ์ผ๋‹ซ๊ธฐ:
      fclose(ํŒŒ์ผํฌ์ธํ„ฐ๋ณ€์ˆ˜);
    • FILE ๊ตฌ์กฐ์ฒด๋Š” stdio.h ํ—ค๋” ํŒŒ์ผ์— ์„ ์–ธ
      ์ŠคํŠธ๋ฆผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ฐ ์ŠคํŠธ๋ฆผ๋งˆ๋‹ค ์ž์‹ ๋งŒ์˜ FILE ๊ตฌ์กฐ์ฒด๋ฅผ๊ฐ–์Œ

  • ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ณผ์ •

    • ํŒŒ์ผ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ : FILE *ํŒŒ์ผํฌ์ธํ„ฐ;

    • ํŒŒ์ผ ์—ด๊ธฐ๋ฅผ fopen() ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌ

    • ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰

    • fclose() ํ•จ์ˆ˜๋กœ ํŒŒ์ผ ๋‹ซ๊ธฐ

      ๐Ÿ”ฝ

      fileio1.c

//fileio1.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char ch;
	FILE* fp;	//ํŒŒ์ผํฌ์ธํ„ฐ

	//1.์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ
	fp = fopen("file1.txt", "at");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	printf("stdin -> disk \n");			//๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”๊ฑธ ๋””์Šคํฌ์— ๋„ฃ๋Š”๋‹ค
	//2.ํŒŒ์ผ ์ €์žฅ						
	while ((ch = fgetc(stdin)) != EOF)	//EOF : ์‹คํ–‰ ์ข…๋ฃŒ (ctrl + z)
		fputc(ch, fp);

	//3.์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ
	fclose(fp);

	 
	//1.์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ
	fp = fopen("file1.txt", "rt");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	printf("stdin -> disk \n");			//๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”๊ฑธ ๋””์Šคํฌ์— ๋„ฃ๋Š”๋‹ค
	//2.ํŒŒ์ผ ์ €์žฅ						
	while ((ch = fgetc(fp)) != EOF)	//EOF : ์‹คํ–‰ ์ข…๋ฃŒ (ctrl + z)
		fputc(ch, stdout); 

	//3.์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ
	fclose(fp);

	return 0;

}

fileio1_2.c

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char ch;
	FILE* in, * out;  //ํŒŒ์ผํฌ์ธํ„ฐ

	//1.์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ
	in = fopen("fileio1.c", "rt");
	if (in == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜(fileio1.c) \n");
		exit(1);
	}
	out = fopen("fileio1.bak", "wt");
	if (out == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜(fileio1.bak) \n");
		exit(1); 
	} 

	//2.ํŒŒ์ผ๋ณต์‚ฌ
	while ((ch = fgetc(in)) != EOF)
		fputc(ch, out);

	//3.์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ
	fclose(in);
	fclose(out);
	printf("ํŒŒ์ผ๋ณต์‚ฌ. \n");
	return 0;
}

fileio1_3.c


//fileio1_3.c

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

int main()
{
	char ch;
	FILE* fp;	//ํŒŒ์ผํฌ์ธํ„ฐ

	//1.์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ
	fp = fopen("file1.txt", "wt");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	printf("stdin -> disk \n");			//๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”๊ฑธ ๋””์Šคํฌ์— ๋„ฃ๋Š”๋‹ค
	//2.ํŒŒ์ผ ์ €์žฅ						
	while ((ch = fgetc(stdin)) != EOF)	//EOF : ์‹คํ–‰ ์ข…๋ฃŒ (ctrl + z)
		fputc(ch, fp);

	//3.์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ
	//fclose(fp);
	//๋‹ซ๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ • ์ƒ๋žต => freopen ์‚ฌ์šฉ ๊ฐ€๋Šฅ 

	//1.์ŠคํŠธ๋ฆผ ์žฌ์—ฐ๊ฒฐ 
	fp = freopen("file1.txt", "rt", fp);		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	printf("stdin -> disk \n");			//๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”๊ฑธ ๋””์Šคํฌ์— ๋„ฃ๋Š”๋‹ค
	//2.ํŒŒ์ผ ์ €์žฅ						
	while ((ch = fgetc(fp)) != EOF)	//EOF : ์‹คํ–‰ ์ข…๋ฃŒ (ctrl + z)
		fputc(ch, stdout);

	//3.์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ
	fclose(fp);

	return 0;

}


fileio2.c

//fileio2.c
// ๋ฌธ์ž์—ด ์ž…์ถœ๋ ฅ 
#include <stdio.h>
#include <stdlib.h> // exit ์‚ฌ์šฉ 

int main()
{
	char str[20] = "kingdom", tmp[20]; 
	FILE *fp;  // ํŒŒ์ผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜  

	/*fp = fopen("file2.txt", "wt");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	fputs(str, fp); // int fputs(char*,FILE*);//ํŒŒ์ผ๋กœ ๋ฌธ์ž์—ด์„์ถœ๋ ฅํ•œ๋‹ค. 

	fclose(fp); 

	
	*/

	fp = fopen("file2.txt", "rt");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);
	}

	fgets(tmp, 20, fp); // fgets(str, sizeof(str), fp);
	// ํŒŒ์ผํฌ์ธํ„ฐ(fp)์™€ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ๋ฐ”์ดํŠธ ์ˆ˜์—๋”ฐ๋ผ
	// ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ tmp(์ž„์‹œ๋ฐฐ์—ด)๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.  
	fclose(fp);

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

	return 0;
}

// ํŒŒ์ผ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ , ํŒŒ์ผ ์—ด๊ธฐ๋ฅผ fopen() ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌ => ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰ => fclose() ํ•จ์ˆ˜๋กœ ํŒŒ์ผ ๋‹ซ๊ธฐ

fileio2_2.c

//fileio2_2.c

#include <stdio.h>
#include <stdlib.h> 
// ๋ฌธ์ž์—ด ์ถœ๋ ฅํ•˜๊ธฐ 
int main()
{
	char tmp[100]; 
	FILE* fp; //FILE ๊ตฌ์กฐ์ฒด 

	fp = fopen("C:\\Windows\\system.ini", "rt"); // `//` => ํŠน์ˆ˜๋ฌธ์ž ํ•ด์ œํ•˜์—ฌ ๊ฒฝ๋กœ๋ช… ์ง€์ • 
	if (fp == NULL)
	{
		printf("C:\\Windows\\system.ini Open Error."); 
		exit(1); 

	}

	while (1)
	{
		if (fgets(tmp, 80, fp) == NULL) //๋นˆ ํŒŒ์ผ์„ ์ฝ์—ˆ์„ ๊ฒฝ์šฐ fgetc๋Š” EOF๋ฅผ ์˜๋ฏธํ•˜๋Š” -1์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, fgets๋Š” ๋„ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
			break; 

		printf("%s ", tmp); 

	}

	fclose(fp); 

	return 0; 
}

fileio2_3.c

//fileio2_3.c

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

int main()
{
	FILE* fp; 
	char str[5][20] = { "kingdom\n", "king\n", "queen\n", "prince\n", "princess\n" }; 
	char tmp[20]; 
	int i; 

	/*
	fp = fopen("fileio2_3.txt", "wt");
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n"); 
		exit(1); 

	}

	for (i = 0; i < 5; i++)
		fputs(str[i], fp); // str[i]๋Š” ํ–‰ ์˜๋ฏธ, ํ–‰ ๋ณ„ ๋ฐ์ดํ„ฐ ๊ฐ’ ์ž…๋ ฅ๋จ.  
		*/

	fp = fopen("fileio2_3.txt", "rt");
	if (fp == NULL)
	{
		printf("ํŒŒ์ผ ์—ด๊ธฐ ์˜ค๋ฅ˜ \n");
		exit(1);

	}

	for (i = 0; i < 5; i++)
	{
		fgets(tmp, sizeof(str[i]), fp); // str[i]๋Š” ํ–‰ ์˜๋ฏธ, ํ–‰ ๋ณ„ ๋ฐ์ดํ„ฐ ๊ฐ’ ์ž…๋ ฅ๋จ.
		printf("%s", tmp); 
	}
	fclose(fp);

	return 0; 
}


// 3000์ฃผ์†Œ str[0] =>  `kingdom` `\n`(new line) `\0`
// 3020์ฃผ์†Œ str[1] =>  `king` `\n(new line)` `\0`
// 3040์ฃผ์†Œ str[2] =>  `queen` `\n(new line)` `\0`
// 3060์ฃผ์†Œ str[3] =>  `prince` `\n(new line)` `\0`
// 3080์ฃผ์†Œ str[4] =>  `princess` `\n(new line)` `\0`




fileio3.c

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

struct STUDENT {
	char name[20];
	int kor;
	int eng;
	int math;
	float avg;
};

int main() { 
	FILE* fp;
	struct STUDENT stu = { "kim", 50, 90, 62 }, tmp;
	stu.avg = (stu.kor + stu.eng + stu.math) / 3.0;

	//printf("%s, %d, %d, %d, %.2f\n", stu.name, stu.kor, stu.eng, stu.math, stu.avg);
	fp = fopen("file3.txt", "wt");
	if (fp == NULL) {
		printf("Wrong Access.\n");
		exit(1);
	}

	fprintf(fp, "%s %d %d %d %f", stu.name, stu.kor, stu.eng, stu.math, stu.avg);

	fclose(fp);

	fp = fopen("file3.txt", "rt");
	if (fp == NULL) {
		printf("Wrong Access.\n");
		exit(1);
	}

	fscanf(fp, "%s %d %d %d %f", tmp.name, &tmp.kor, &tmp.eng, &tmp.math, &tmp.avg);
	printf("%s %d %d %d %.2f", tmp.name, tmp.kor, tmp.eng, tmp.math, tmp.avg);

	fclose(fp);
}
profile
heejoojeon@daou.co.kr

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

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