Native/C
[실습] 커맨드 라인 아규먼트 이용해서 처리하기
aucd29
2013. 10. 2. 18:51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 5000
void GetLine(char *szMemo);
void main(int argc, char *argv[])
{
char c;
char szMemo[MAX];
int i=0, j=0;
FILE *fp, *fp2;
if(argc > 3) printf("error : argc가 3이상입니다.\n");
switch(argc)
{
case 1:
GetLine(szMemo);
fputs(szMemo,stdout);
break;
case 2:
fp = fopen(argv[1],"r");
if(fp == NULL) {
printf("File not found\n");
exit(1);
}
while((c = fgetc(fp)) != EOF)
printf("%c",c);
fclose(fp);
break;
case 3:
if(!strcmp(argv[1],"@"))
{
fp = fopen(argv[2],"w");
while((c = getchar()) != EOF)
fputc(c, fp);
fclose(fp);
}
else
{
fp = fopen(argv[1], "r");
if(fp == NULL)
{
printf("File not found\n");
exit(1);
}
while((c = fgetc(fp)) != EOF)
szMemo[j++] = c;
szMemo[j] = '\0';
j = 0;
fp2 = fopen(argv[2], "w");
while((c = szMemo[j++]) != '\0')
fputc(c,fp2);
fputc('\0',fp2);
fclose(fp);
fclose(fp2);
}
break;
}
}
void GetLine(char *szMemo)
{
int i=0;
char c;
while((*szMemo++ = c = getchar()) != EOF && i++ < MAX);
*szMemo = '\0';
}
#include <stdlib.h>
#include <string.h>
#define MAX 5000
void GetLine(char *szMemo);
void main(int argc, char *argv[])
{
char c;
char szMemo[MAX];
int i=0, j=0;
FILE *fp, *fp2;
if(argc > 3) printf("error : argc가 3이상입니다.\n");
switch(argc)
{
case 1:
GetLine(szMemo);
fputs(szMemo,stdout);
break;
case 2:
fp = fopen(argv[1],"r");
if(fp == NULL) {
printf("File not found\n");
exit(1);
}
while((c = fgetc(fp)) != EOF)
printf("%c",c);
fclose(fp);
break;
case 3:
if(!strcmp(argv[1],"@"))
{
fp = fopen(argv[2],"w");
while((c = getchar()) != EOF)
fputc(c, fp);
fclose(fp);
}
else
{
fp = fopen(argv[1], "r");
if(fp == NULL)
{
printf("File not found\n");
exit(1);
}
while((c = fgetc(fp)) != EOF)
szMemo[j++] = c;
szMemo[j] = '\0';
j = 0;
fp2 = fopen(argv[2], "w");
while((c = szMemo[j++]) != '\0')
fputc(c,fp2);
fputc('\0',fp2);
fclose(fp);
fclose(fp2);
}
break;
}
}
void GetLine(char *szMemo)
{
int i=0;
char c;
while((*szMemo++ = c = getchar()) != EOF && i++ < MAX);
*szMemo = '\0';
}