일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 디지몬
- vscode
- メソッド
- html
- rails7
- javascript
- jsp
- DART
- 単語
- rails
- Python
- 一日一つメソッド
- C로 시작하는 컴퓨터 프로그래밍4판
- 반다이몰
- 비즈니스일본어
- 일본어
- CSS
- 건담
- 연습문제
- 日本語
- springboot
- Spring
- 건담베이스
- Web
- java
- Flutter
- 자바
- nico
- 인프런
- ruby
Archives
- Today
- Total
AR삽질러
C로 시작하는 컴퓨터 프로그래밍4판 - 12장 파일처리와 메크로 본문
728x90
혼자해보기 12-1
[예제 12-3]에서 만든 basic.txt파일을 이진 모드로 연 후 freat() 함수를 사용하여 읽어들인 값을 도스 창에 출력하는 프로그램을 작성하시오.
예제 12-1
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
int main(void) {
FILE* fp;
int n = 4000;
if ((fp = fopen("basic.txt", "wb")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
fwrite(&n, sizeof(int), 1, fp);
fclose(fp);
return 0;
}
프로그램작성
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE* fp;
char ch;
if ((fp = fopen("basic.txt", "rb")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
if (fread(&ch, sizeof(char), 1, fp) != 1) {
printf("파일을 읽어올 수 없습니다.\n");
exit(1);
}
printf("===파일 읽어온 결과===\n%c\n", ch);
fclose(fp);
return 0;
}
혼자해보기 12-2
다음과 같이 2명의 정보가 입력된 텍스트 파일을 만들어 프로젝트 폴더에 저장한다. 이 파일에서 2명의 정보를 읽어와 도스창에 출력하는 프로그램을 [예제 12-4]를 참조하여 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct students {
char name[40];
char address[40];
int age;
};
typedef struct students student;
int main(void) {
FILE* fp1;
student st1 = { "홍길동", "서울", 30 }, st2 = { "김박사", "부산", 33 };
if ((fp1 = fopen("basic.txt", "w")) == NULL) {
printf("파일을 열 수 없습니다..\n");
exit(1);
}
fprintf(fp1, "%s %s %d\n", st1.name, st1.address, st1.age);
fprintf(fp1, "%s %s %d\n", st2.name, st2.address, st2.age);
fclose(fp1);
if ((fp1 = fopen("basic.txt", "r")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
fscanf(fp1, "%s %s %d\n", st2.name, st2.address, &st2.age);
printf("이름 : %s, 거주지 : %s, 나이 : %d\n\n", st1.name, st1.address, st1.age);
fclose(fp1);
if ((fp1 = fopen("basic.txt", "r")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
fscanf(fp1, "%s %s %d\n", st2.name, st2.address, &st2.age);
printf("이름 : %s, 거주지 : %s, 나이 : %d\n\n", st2.name, st2.address, st2.age);
fclose(fp1);
return 0;
}
01. 다음 프로그램의 오류를 수정하시오.
1)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE* fp;
int n = 4000;
if ((fp = fopen(basic.txt, "wb")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
fwrite(n, sizeof(n), 1, fp);
fclose(fp);
return 0;
}
수정후
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE* fp;
int n = 4000;
if ((fp = fopen("basic.txt", "wb")) == NULL) {
printf("파일을 열 수 없습니다.\n");
exit(1);
}
fwrite(&n, sizeof(int), 1, fp);
fclose(fp);
return 0;
}
2)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14;
#define AREA(PI * X * X)
int main(void) {
float R;
printf("원의 반지름을 입력하세요 : ");
scanf("%f", &R);
printf("원의 면적은 %.2f입니다.\n", AREA);
return 0;
}
수정후
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14
#define AREA(X) (PI * (X) * (X))
int main(void) {
float R;
printf("원의 반지름을 입력하세요 : ");
scanf("%f", &R);
printf("원의 면적은 %.2f입니다.\n", AREA(R));
return 0;
}
02. 다음과 같은 정보가 담긴 Bookinfo.txt 라는 텍스트 파일이 있다고 가정해보자. 이 파일에 저장되어 있는 정보를 읽어와 구조체 book을 만들어 저장하는 프로그램을 작성하시오.
C언어 C출판사 20000
Java J출판사 25000
VB V출판사 30000
Perl P출판사 23000
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define BOOKS 3
#define TITLE_LENGTH 50
#define PUB_LENGTH 50
typedef struct {
char title[TITLE_LENGTH];
char publish[PUB_LENGTH];
int price;
}book;
int main(void) {
FILE* file = fopen("Bookinfo.txt", "r");
if (file == NULL) {
printf("파일을 열 수 없습니다.\n");
return 1;
}
book books[BOOKS];
for (int i = 0; i < BOOKS; i++) {
if (fscanf(file, "%s %s %d", books[i].title, books[i].publish, &books[i].price) != 3) {
printf("파일에서 정보를 읽어오지 못했습니다.\n");
fclose(file);
return 1;
}
}
fclose(file);
for (int i = 0; i < BOOKS; i++) {
printf("책 제목 : %s\n", books[i].title);
printf("책 출판사 : %s\n", books[i].publish);
printf("책 가격 : %d\n", books[i].price);
printf("\n");
}
return 0;
}
08. 3개의 수를 입력받은 뒤 가장 큰수를 알려주는 매크로 함수 MAX를 만들고 프로그램하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#define MAX(a, b, c) ((a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c)))
int main(void) {
int a, b, c;
printf("숫자 세개를 입력 : ");
scanf("%d %d %d", &a, &b, &c);
int max = MAX(a, b, c);
printf("가장 큰 수는 %d입니다.", max);
return 0;
}
09. 실수를 입력받아 절댓값을 구하는 매크로 함수를 만들어 이를 출력하는 프로그램을 작성하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#define VALUE(x) (((x) < 0) ? -(x) : (x))
int main(void) {
float num;
printf("실수를 입력하세요 : ");
scanf("%f", &num);
float result = VALUE(num);
printf("입력한 수의 절대값은 %.2f입니다.\n", result);
return 0;
}
10. 실수를 입력받아 정수로 바꾸되, 반올림을 해서 정수로 바꾸는 매크로 함수인 CHINT 함수를 만들고 프로그램하시오.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#define ROUNDS(x) ((int)((x) + 0.5))
int main() {
float num;
printf("실수를 입력하세요: ");
scanf("%f", &num);
int result = ROUNDS(num);
printf("반올림된 정수값은 %d입니다.\n", result);
return 0;
}
728x90
반응형
LIST
'C' 카테고리의 다른 글
C로 시작하는 컴퓨터 프로그래밍4판 - 13장 실전예제(면적구하프로그램) (0) | 2023.06.22 |
---|---|
C로 시작하는 컴퓨터 프로그래밍4판 - 13장 실전예제(데이터 정렬 프로그램) (0) | 2023.06.22 |
C로 시작하는 컴퓨터 프로그래밍4판 - 11장 구조체와 열거형 (0) | 2023.06.22 |
C로 시작하는 컴퓨터 프로그래밍4판 - 10장 Pointer (0) | 2023.04.25 |
C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역 (0) | 2023.04.10 |