01.
더보기
#include <stdio.h>
#include <stdlib.h> //for exit();
typedef struct scorerecord {
char name[10];
double mid;
double final;
double quiz;
}s_rec;
int main(void) {
FILE* fp1;
FILE* fp2;
if (fopen_s(&fp1, "origin.txt", "r") != 0) {
printf("ERR001 : Cant open this file\n");
exit(1);
}
if (fopen_s(&fp2, "output.txt", "w") != 0) {
printf("ERR001 : Cant open this file\n");
exit(1);
}
char str[80];
s_rec student;
int cnt = 0;
double sum = 0;
//fgets(str, 80, fp1);
//while (!feof(fp1)) //이렇게 해서 while문의 마지막에 다시 fgets를 하면 마지막 행을 못불러들임
while (fgets(str, 80, fp1)!=NULL) { //fgets는 파일의 끝에서 0을 반환함
sscanf_s(str, "%d %s %lf %lf %lf", &cnt, student.name,10, &student.mid, &student.final, &student.quiz);
sum = student.mid + student.final + student.quiz;
fprintf(fp2, "%5d\t%5s%8.1lf%8.1lf%8.1lf%8.1lf\n", cnt, student.name, student.mid, student.final, student.quiz, sum);
fprintf(stdout, "%5d\t%5s%8.1lf%8.1lf%8.1lf%8.1lf\n", cnt, student.name, student.mid, student.final, student.quiz, sum);
}
fclose(fp1);
fclose(fp2);
return 0;
}
02.
더보기
//비주얼 스튜디오에서 실행파일의 이름은 프로젝트 이름임
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
FILE* f;
if (argc != 2) {
printf("USAGE: %s <filename>", argv[0]);
exit(2);
}
if (fopen_s(&f, argv[1], "r")) {
printf("ERR001: CANNOT OPEN FILE\n");
exit(1);
}
int ch, cnt = 0;
printf("%4d: ", ++cnt);
while ((ch = fgetc(f)) != EOF) {
putchar(ch);
if (ch == '\n')
printf("%4d: ", ++cnt);
}
printf("\n");
fclose(f);
return 0;
}
03.
더보기
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
if (argc != 3) {
printf("USAGE: %s <srcfile> <destfile>\n", argv[0]);
exit(3);
}
FILE* fp1;
FILE* fp2;
if (fopen_s(&fp1, argv[1], "r") != 0) {
printf("ERR001: CANNOT OPEN FILE\n");
exit(1);
}
if (fopen_s(&fp2, argv[2], "a+") != 0) {
printf("ERR002: CANNOT OPEN FILE\n");
exit(2);
}
int ch;
//파일모드를 a로 하면 읽기는 지정한 포인터에서 가능하지만 쓰기는 무조건 끝에서부터함
fputc('\n', fp2);
while ((ch = getc(fp1)) != EOF) {
putc(ch, fp2);
}
fclose(fp1);
rewind(fp2);
printf("추가된 파일 내욜 출력: -->\n\n");
while ((ch = getc(fp2)) != EOF) {
putchar(ch);
}
fclose(fp2);
return 0;
}
04.
더보기
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
if (argc != 3) {
printf("USAGE: %s <file1> <file2>\n", argv[0]);
exit(3);
}
FILE* fp1;
FILE* fp2;
if (fopen_s(&fp1, argv[1], "r")!=0) {
printf("ERR001: CANNOT OPEN <%s> FILE", argv[1]);
exit(1);
}
if (fopen_s(&fp2, argv[2], "r") != 0) {
printf("ERR002: CANNOT OPEN <%s> FILE", argv[2]);
exit(1);
}
fseek(fp1, 0, SEEK_END);
fseek(fp2, 0, SEEK_END);
long firstLen = ftell(fp1);
long secondLen = ftell(fp2);
if (firstLen != secondLen) {
printf("%s와 %s는 다른 파일입니다.\n", argv[1], argv[2]);
fclose(fp1);
fclose(fp2);
return 0;
}
rewind(fp1);
rewind(fp2);
int ch1, ch2;
while ((ch1=getc(fp1)) != EOF) {
if (ch1 != (ch2 = getc(fp2))) {
printf("%s와 %s는 다른 파일입니다.\n", argv[1], argv[2]);
fclose(fp1);
fclose(fp2);
return 0;
}
}
printf("%s와 %s는 같은 파일입니다.\n", argv[1], argv[2]);
fclose(fp1);
fclose(fp2);
return 0;
}
05.
더보기
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
if (argc != 3) {
printf("USAGE: %s <srcfile> <dstfile>\n", argv[0]);
exit(0);
}
FILE* fp1;
FILE* fp2;
if (fopen_s(&fp1, argv[1], "r") != 0) {
printf("ERR001: CANNOT OPEN <%s> FILE", argv[1]);
exit(1);
}
if (fopen_s(&fp2, argv[2], "w") != 0) {
printf("ERR001: CANNOT OPEN <%s> FILE", argv[2]);
exit(1);
}
char buff[256];
while (fgets(buff, 256, fp1) != NULL) {
fprintf(stdout, "%s\n", buff);
fputs(buff, fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
06.
더보기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]) {
if (argc != 2) {
printf("USAGE: %s <filename>\n", argv[0]);
exit(1);
}
FILE* fp;
if (fopen_s(&fp, argv[1], "r") != 0) {
printf("ERR001: CANNOT OPEN <%s> FILE", argv[1]);
exit(1);
}
int ch_cnt, wrd_cnt, line_cnt;
ch_cnt = wrd_cnt = line_cnt = 0;
char buff[128];
while (fgets(buff, 128, fp) != NULL) {
for(int i = 0; buff[i] != '\0'; i++) {
if (buff[i] >= 'A' && buff[i] <= 'Z' || buff[i] >= 'a' && buff[i] <= 'z') {
ch_cnt++;
}
}
char* nex_str;
char* seg = strtok_s(buff, " .,()\r\n\t", &nex_str);
while (seg) {
wrd_cnt++;
seg = strtok_s(NULL, " .,()\r\n\t", &nex_str);
}
line_cnt++;
}
printf("\t\tAnalysis Result\n");
printf("--------------------------------------------------\n");
printf("\t\tCount of Character : %6d\n", ch_cnt);
printf("\t\t Count of Word : %6d\n", wrd_cnt);
printf("\t\t Count of Line : %6d\n", line_cnt);
fclose(fp);
return 0;
}
07.
더보기
#include <stdio.h>
int main(int argc, char* argv[]) {
if (argc != 2 && argc != 3) {
printf("USAGE [1]: %s <file> // remove the <file>\n", argv[0]);
printf("USAGE [2]: %s <oldfile> <newfile> // rename <oldfile> to <newfile>\n", argv[0]);
exit(1);
}
if (argc == 2) {
if (remove(argv[1]) == 0)
printf("파일 %s가 삭제되었습니다.\n", argv[1]);
else
printf("ERR 파일이 삭제되지 않았습니다.\n");
}
if (argc == 3) {
if (rename(argv[1], argv[2]) == 0)
printf("파일 %s가 %s로 수정되었습니다.\n", argv[1], argv[2]);
else
printf("ERR 파일 이름이 수정되지 않았습니다.\n");
}
return 0;
}
08.
더보기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
if (argc != 3) {
printf("USAGE : %s <srcfile> <string>\n", argv[0]);
exit(1);
}
char* fn = argv[1], lne[256];
char* targetstr = argv[2];
int cnt = 0;
FILE* fp;
if (fopen_s(&fp, argv[1], "r") != 0) {
printf("ERR001 : Cant open the file\n");
exit(1);
}
printf("찾을 단어 %s, 길이: %d\n\n", targetstr, (int)(strlen(targetstr)));
printf("검색 내용 출력 : -->\n\n");
while (!feof(fp))
{
fgets(lne, 256, fp);
++cnt;
if (strstr(lne, targetstr))
printf("%3d : %s\n", cnt, lne);
}
fclose(fp);
return 0;
}