쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-3
9.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
FILE* fp1, * fp2, * fp3;
char file1[100], file2[100], file3[100];
char buffer[100];
if (argc >= 4) {
strcpy(file1, argv[1]);
strcpy(file2, argv[2]);
strcpy(file3, argv[3]);
}
else {
printf("인수가 부족합니다.\n");
return 0;
}
printf("%s 파일+ %s파일을 %s파일로 복사합니다.\n", file1, file2, file3);
if ((fp1 = fopen(file1, "r")) == NULL) {
fprintf(stderr, "원본 파일 %s을 열 수 없습니다.\n", file1);
exit(1);
}
if ((fp2 = fopen(file2, "r")) == NULL) {
fprintf(stderr, "원본 파일 %s을 열 수 없습니다.\n", file2);
exit(1);
}
if ((fp3 = fopen(file3, "w")) == NULL) {
fprintf(stderr, "결과 파일 %s을 열 수 없습니다.\n", file3);
exit(1);
}
fputs(buffer, fp3);
fputs(buffer, fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
10.
#include <stdio.h>
#include <ctype.h>
int main(void) {
FILE* fp = NULL;
char buffer[500];
int line_number = 1;
fp = fopen("sample.txt", "r");
if (fp == NULL) {
printf("파일 열기 실패\n");
return 0;
}
while (fgets(buffer, 500, fp) != NULL) {
printf("%d: %s\n", line_number, buffer);
line_number++;
}
fclose(fp);
return 0;
}
11.
#include <stdio.h>
#include <string.h>
#define TITLE_SIZE 50
#define NAME_SIZE 50
#define PUBLISHER_SIZE 50
typedef struct BOOK {
char title[TITLE_SIZE];
char author[NAME_SIZE];
char publisher[PUBLISHER_SIZE];
}
BOOK;
void add_record(BOOK library[], int count);
void menu();
int get_input();
void search_record(BOOK library[], int count);
void print_record(BOOK library[], int count);
int main(void) {
int num, count = 0;
BOOK library[30] = {
'\0'
}
;
while (1) {
menu();
num = get_input();
switch (num) {
case 1:
add_record(library, count);
count++;
continue;
case 2:
print_record(library, count);
continue;
case 3:
search_record(library, count);
continue;
case 4:
return -1;
}
return 0;
}
}
void add_record(BOOK library[], int count) {
int type;
fflush(stdin);
printf("도서의 이름:");
gets(library[count].title);
printf("저자:");
gets(library[count].author);
printf("출판사:");
gets(library[count].publisher);
}
void menu() {
printf("====================\n");
printf(" 1. 추가\n");
printf(" 2. 출력\n");
printf(" 3. 검색\n");
printf(" 4. 종료\n");
printf("====================\n");
}
int get_input() {
int num;
printf("정수값을 입력하시오 : ");
scanf("%d", &num);
return num;
}
void search_record(BOOK library[], int count) {
int i;
char title[TITLE_SIZE];
fflush(stdin);
printf("제목: ");
gets(title);
for (i = 0; i < count; i++) {
if (strcmp(title, library[i].title) == 0) {
printf("출판사는 %s\n", library[i].publisher);
return;
}
}
printf("찾는 책이 테이블에 없습니다.\n");
}
void print_record(BOOK library[], int count) {
int i;
fflush(stdin);
for (i = 0; i < count; i++) {
printf("제목 : %s\n", library[i].title);
printf("저자 : %s\n", library[i].author);
printf("출판사 : %s\n", library[i].publisher);
}
}
12.
#include <stdio.h>
int main(void) {
FILE* fp = NULL;
char fname[100];
char word[100];
char buffer[1000];
int count = 0;
printf("파일 이름: ");
scanf("%s", fname);
printf("탐색할 단어: ");
scanf("%s", word);
fp = fopen(fname, "r");
if (fp == NULL) {
printf("파일 열기 실패\n");
return 0;
}
while (fgets(buffer, 1000, fp) != NULL) {
count++;
if (strstr(buffer, word) != NULL) {
printf("%s:%d %s\n", fname, count, buffer);
}
}
fclose(fp);
return 0;
}
Good
답글삭제