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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argv, char* argv[]) {
FILE *in, *out;
char c;
// argv[] 크기 1개 : argv[] 모니터에 출력
if(argc == 1)
while((c = getc(stdin)) != '\n')
putc(c, stdout);
// argv[] 크기 2개 : txt내용 읽기
else if(argc == 2) {
// 파일 읽기모드 시 파일 없으면 에러가 나므로 에러 처리
if((out = fopen(argv[1], "r")) == NULL) {
printf("%s열기를 실패했습니다.\n", argv[1]);
exit(1);
}
while((c=getc(out)) != EOF) // out에 EOF를 만나기 전까지 문자 가져오기
putc(c, stdout); // 모니터에 가져온 문자 출력
fclose(out);
}
// argv[] 크기 3개
else if(argc == 3) {
// @ txt : txt 쓰기모드, 키보드로 받은 문자 txt에 입력
if(!strcmp(argv[1], "@")) { // argv[1]과 @가 0(F)이라면>>strcmp 결과 0 : 같은 문자
// txt를 쓰기모드로 여는데 오류가 있다면
if((in = fopen(argv[2, "w"])) == NULL) {
printf("%s열기를 실패했습니다.\n", argv[2]);
exit(2);
}
while((c = getc(stdin)) != EOF) // 키보드에 `ctrl-z`가 눌리기 전까지
putc(c, in); // txt에 문자 입력
fclose(in);
}
// argv[1]의 txt 내용을 argv[2]의 txt에 복사
else {
// argv[1]파일이 없거나 오류가 있다면
if((in = fopen(argv[1],"r")) == NULL) {
printf("%s열기를 실패했습니다.\n", argv[1]);
exit(3);
}
// argv[2]파일을 쓰기모드로 여는데 오류가 있다면
if((out = fopen(argv[2], "w")) == NULL) {
printf("%s열기를 실패했습니다.\n", argv[2]);
exit(4);
}
while((c = getc(in)) != EOF) // argv[1]에 EOF를 만나기 전까지의 문자를
putc(c, out); // argv[2]에 입력
fclose(out);
fclose(in);
}
}
// 모든 경우의 수가 아닐 경우
else {
printf("잘못된 입력입니다\n");
exit(5);
}
return 0;
}
|
Comments powered by Disqus.