쉽게 풀어쓴 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;
}

댓글

댓글 쓰기

이 블로그의 인기 게시물

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 10-3

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 16-1

쉽게 풀어쓴 C언어 EXPRESS(개정 3판) - Chapter 13-2