학교 수업/1-1, 1-2 코딩 기초 (파이썬, C)

[C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 15주차

70825 2020. 12. 7. 17:23
반응형

 

 

 

문제1

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	FILE *fp1, *fp2;
	int ch;

	fp1 = fopen("from.txt", "rt");
	fp2 = fopen("to.txt", "wt");
    
	while ((ch = fgetc(fp1)) != EOF)
		fputc(ch, fp2);

	if (feof(fp1))
		printf("복사 완료\n");
	else
		printf("복사 에러\n");

	fclose(fp1);
	fclose(fp2);

	return 0;
}

 

 

 

문제 2

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	FILE* fp1, * fp2;
	char ch[100];//버퍼배열

	fp1 = fopen("from.txt", "rt");
	fp2 = fopen("to.txt", "wt");

	while ((fgets(ch,100,fp1)) != NULL)
		fputs(ch, fp2);

	if (feof(fp1))
		printf("복사 완료\n");
	else
		printf("복사 에러\n");

	fclose(fp1);
	fclose(fp2);

	return 0;
}

 

문제3

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX 3

struct person
{
	int id;
	char name[20];
};
typedef struct person PERSON;

int main()
{
	int i, count, x;
	PERSON arr[MAX];

	
	FILE* out = fopen("student.bin", "wb");

	//file error
	if (out == NULL)
	{
		printf("File open error\n");
		return 0;
	}

	
	for (i = 0; i < MAX; i++)
	{
		printf("\n%d, 이름: ", i + 1); scanf("%s", arr[i].name);
		printf("   번호: "); scanf("%d", &arr[i].id);
	}
	for (i = 0; i < MAX; i++)
	{
		count = fwrite(&arr[i], sizeof(arr[i]), 1, out);
		
		if (count < 1)
		{
			printf(stderr, "Error opening while a structure. \n");
			return 0;
		}
	}
	fclose(out);
	printf("\n== 파일 출력 완료 ==\n");

	return 0;
}

 

 

문제4

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX 3

struct person
{
	int id;
	char name[20];
};
typedef struct person PERSON;

int main()
{
	int count=0;
	PERSON arr[MAX];

	FILE* infile = fopen("student.bin", "rb");
	
	if (infile == NULL)
	{
		printf("FILE OPEN ERROR\n");
		return 0;
	}
	
	
	while (fread(&arr[count], sizeof(arr[count]), 1, infile) == 1)
		count++;

	
	if (feof(infile)) printf("Reading complete\n");
	else printf("Reading error\n");

	
	for (int i = 0; i < MAX; i++)
		printf("id: %d, name: %s\n", arr[i].id, arr[i].name);

	fclose(infile);
	return 0;
}

 

 

문제 5

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define WIDTH  256
#define HEIGHT 256

int main()
{
	int i, j;
	unsigned char Org[WIDTH][HEIGHT];
	unsigned char Out[WIDTH][HEIGHT];

	FILE* infile = fopen("binary image/lena.raw", "rb");
	if (infile == NULL)
	{
		printf("파일 열기 실패\n");
		return 0;
	}
	fread(Org, sizeof(char), WIDTH * HEIGHT, infile);
	fclose(infile);

	for(i=0; i<HEIGHT; i++)
		for (j = 0; j < WIDTH; j++)
		{
			Out[i][j] = 255 - Org[i][j];
		}
	FILE* outfile1 = fopen("lena_inv.raw", "wb");
	fwrite(Out, sizeof(char), WIDTH * HEIGHT, outfile1);
	fclose(outfile1);

	for (i = 0; i < HEIGHT; i++)
		for (j = 0; j < WIDTH; j++)
		{
			Out[i][j] = Org[i][WIDTH-j];
		}
	FILE* outfile2 = fopen("lena_1.raw", "wb");
	fwrite(Out, sizeof(char), WIDTH * HEIGHT, outfile2);
	fclose(outfile2);

	for (i = 0; i < HEIGHT; i++)
		for (j = 0; j < WIDTH; j++)
		{
			Out[i][j] = Org[HEIGHT-i][j];
		}
	FILE* outfile3 = fopen("lena_2.raw", "wb");
	fwrite(Out, sizeof(char), WIDTH * HEIGHT, outfile3);
	fclose(outfile3);

	return 0;
}
반응형