/*
* 1_textfile.c
*
* Created on: 2018. 3. 14.
* Author: juyeon
*/
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
void test1();
void test2();
void test3();
void test4();
void test5();
void test6();
void test7();
void test8();
int main()
{
//1.abc.txt 텍스트파일을 열어 abc라는 값을 쓰기
test1();
//2.abc.txt 텍스트파일을 열어 값을 읽고 출력하기
test2();
//3. abc.txt라는 파일을 열어 다음 라인에 def라는 값을 쓰기
test3();
test2();
//4. abc.txt라는 파일을 열어 초기화 후 Hello, world!라는 값을 쓰기
test4();
test2();
//5.a.jpg 파일을 읽어서 버퍼에 복사 후, b.jpg라는 파일로 만들기(단, 파일 복사, 이동 등의 함수 사용하지 않기)
test5();
//6.b.jpg 파일 사이즈 출력하기
test6();
//7.abc.txt 파일에 3번째 위치(l)부터 4글자를 abcd로 교체 후, 파일내용 읽어서 출력하기(Heabcdworld!)
test7();
//8.abc.txt 파일을 읽어, 거꾸로 출력하시오(!dlrowdcbaeH)
test8();
/*9.report.txt라는 파일에는 다음과 같이 성적이 적혀있다. report_result.txt 파일을 생성하여 번호,평균,총점을 다음과 같이 출력하라.
* 입력파일
1!en:30,ko:50,math:70
2!en:50,ko:80,math:50
3!en:100,ko:100,math:100
*
*출력파일
1;avg=50,sum=150
2;avg=60,sum=180
3;avg=100,sum=300
*/
test9();
return 0;
}
void test1()
{
FILE* fp = NULL;
fp = fopen("abc.txt", "w");
fprintf(fp, "abc");
fclose(fp);
}
void test2()
{
FILE* fp = NULL;
fp = fopen("abc.txt", "r");
char buf[1024];
while(fgets(buf, 1024, fp) != NULL) {
printf("%s\n", buf);
}
fclose(fp);
}
void test3()
{
FILE* fp = NULL;
fp=fopen("abc.txt", "w+");
fprintf(fp, "\ndef");
fclose(fp);
}
void test4()
{
FILE* fp = NULL;
fp = fopen("abc.txt", "w");
fprintf(fp, "Hello, world!");
fclose(fp);
}
void test5()
{
FILE* fpr = NULL, *fpw=NULL;
fpr = fopen("a.jpg", "rb");
fpw = fopen("b.jpg", "wb");
char buf[1024];
int readLen = 0;
while((readLen=fread(buf, 1, 1024, fpr)) != 0) {
fwrite(buf, 1, readLen, fpw);
}
fclose(fpr);
fclose(fpw);
}
void test6()
{
FILE* fp = NULL;
fp = fopen("b.jpg","rb");
fseek(fp, 0, SEEK_END);
int nSize = ftell(fp);
printf("size:%d\n", nSize);
fclose(fp);
}
void test7()
{
//3번째 위치(l)부터 4글자를 abcd로 교체 후, 파일내용 출력하기(Heabcdworld!)
FILE* fp=NULL;
char* s = "abcd";
char buf[20] = {0,};
fp=fopen("abc.txt", "r+");
fseek(fp, 3, SEEK_SET);
fwrite(s, strlen(s), 1, fp);
rewind(fp);
fread(buf, 20, 1, fp);
printf("%s\n", buf);
fclose(fp);
}
void test8()
{
FILE* fp=NULL;
fp=fopen("abc.txt", "r");
fseek(fp, 0, SEEK_END);
int nSize=ftell(fp);
char* p=(char*)malloc(sizeof(char)*nSize);
memset(p, 0x00, nSize);
rewind(fp);
fread(p, nSize, 1, fp);
for(int i=nSize-1;i>=0;i--){
char c=p[i];
printf("%c", c);
}
free(p);
fclose(fp);
}
/*
1!en:30,ko:50,math:70
2!en:50,ko:80,math:50
3!en:100,ko:100,math:100
1;avg=50,sum=150
2;avg=60,sum=180
3;avg=100,sum=300
*/
void test9()
{
FILE* fp=NULL, *fpw=NULL;
fp=fopen("report.txt", "r");
fpw=fopen("report_result.txt", "w");
int num=0, en=0,ko=0,math=0;
while(fscanf(fp, "%d!en:%d,ko:%d,math:%d", &num, &en, &ko, &math)>0){
fprintf(fpw,"%d;avg=%d,sum=%d\r\n", num, (en+ko+math)/3, en+ko+math);
}
fclose(fp);
fclose(fpw);
}
'프로그래밍 > C언어' 카테고리의 다른 글
C언어 파일 I/O 이건 알아야지 (문제) (0) | 2018.03.21 |
---|