연재 완료/C Lang 예제코드 모음

C언어 파일처리 주요예제 1 (고수준 파일 입출력1)

라이피 (Lypi) 2018. 6. 17. 23:29
반응형

1.  c언어로 작성된 프로그램을 읽어서 화면으로 보여주는 프로그램을 작성하세요.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void display(FILE* fp); //화면에 출력하는 함수

int main()
{
	char fname[20], cExit;
	FILE* fp;

	do {
		printf("input file name : ");
		gets_s(fname, 20);
		fopen_s(&fp,fname,"r");

		if (fp == NULL) {
			fprintf(stderr, "cannot open this file : %s \n", fname);
		}
		else {
			display(fp);
		}

		printf("\n\n Any key... or 'q' to exit...");

		cExit = getchar();
	} while ( cExit != 'q');

}

void display(FILE* fp) 
{
	char c;

	while ((c = getc(fp)) != EOF) {
		putc(c, stdout);
	}
}


2. 화면상에서 프로그램을 작성하고 그 내용을 test.cpp라는 파일에 저장하는 프로그램을 작성하세요.

//화면상에서 프로그램을 작성하고 그 내용을 test.cpp라는 파일에 저장하는 프로그램을 작성하세요.

#include <stdio.h>
#include <conio.h>

int main()
{
	FILE* fp;

	fopen_s(&fp, "Test.cpp", "w");
	
	printf("Ctrl+z to exit \n");
	printf("input codes : \n");
	char c = 0;
	
	while ((c = getc(stdin)) != EOF) {
		putc(c, fp);
	}

	printf("Save in Test.cpp");

	fclose(fp);
}


3. getc()와 putc()를 이용하여 파일을 복사하는 프로그램을 작성하세요.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
	FILE* fpSrc;
	FILE* fpDest;

	char caSrcFileName[20];
	char caDestFileName[20];

	//복사할 파일 열기
	printf("복사할 파일명을 입력하세요(최대 20글자) :"); 
	scanf_s("%s", caSrcFileName, 20);
	fopen_s(&fpSrc, caSrcFileName, "r");
	if (fpSrc == NULL) {
		printf("원본 파일을 찾지 못했습니다. \n");
		return 0;
	}
	
	//복사될 파일 만들기
	printf("새로 만들 파일명을 입력하세요.(최대 20글자) :"); 
	scanf_s("%s", caDestFileName, 20);
	fopen_s(&fpDest, caDestFileName, "w");
	if (fpDest == NULL) {
		printf("새로운 파일을 만드는데 실패했습니다. \n");
		return 0;
	}

	{//내용 복사하기
		char temp;
		while ((temp = getc(fpSrc)) != EOF) {
			putc(temp, fpDest);
		}
	}

	//파일 닫기
	fclose(fpSrc);
	fclose(fpDest);
}


4. 파일을 읽어서 다른 파일에 한 줄씩 더 띄어서 저장하는 프로그램을 작성하세요.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
	FILE* fpSrc;
	FILE* fpDest;

	char caSrcFileName[20];
	char caDestFileName[20];

	//복사할 파일 열기
	printf("복사할 파일명을 입력하세요(최대 20글자) :");
	scanf_s("%s", caSrcFileName, 20);
	fopen_s(&fpSrc, caSrcFileName, "r");
	if (fpSrc == NULL) {
		printf("원본 파일을 찾지 못했습니다. \n");
		return 0;
	}

	//복사될 파일 만들기
	printf("새로 만들 파일명을 입력하세요.(최대 20글자) :");
	scanf_s("%s", caDestFileName, 20);
	fopen_s(&fpDest, caDestFileName, "w");
	if (fpDest == NULL) {
		printf("새로운 파일을 만드는데 실패했습니다. \n");
		return 0;
	}

	{//내용 복사하기
		char temp;
		while ((temp = getc(fpSrc)) != EOF) {
			putc(temp, fpDest);
			if (temp == '\n') {
				putc('\n', fpDest);
			}
		}
	}

	//파일 닫기
	fclose(fpSrc);
	fclose(fpDest);
}


5. 사용자가 빈 라인을 입력할 때까지 입력을 받아 파일에 쓰고, 다시 읽어서 화면으로 출력하는 프로그램을 작성하세요.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	FILE* fp;
	char buff[256];

	//파일에 문자열 입력받기.
	fopen_s(&fp, "new file.txt", "w");
	printf("아래에 내용을 입력하세요 (끝내려면 빈줄을 입력하세요.) \n");
	
	gets_s(buff, 256);
	while (buff[0] != '\0') {
		fputs(buff, fp);
		fputs("\n", fp);
		gets_s(buff, 256);
	} 
	fclose(fp);

	//입력받은 문자열 출력하기
	fopen_s(&fp, "new file.txt", "r");

	printf("입력하신 내용은 다음과 같습니다. \n");
	while (!feof(fp)) {
		fgets(buff, 256, fp);
		if (!feof(fp)) {
			printf("%s", buff);
		}
	}
	fclose(fp);
}


6. 키보드로부터 데이터를 입력받아 "test.txt"파일에 출력하고, 이를 다시 화면에 출력하는 프로그램을 작성하세요.

#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE* fp;
	char buff[256];
	
	//문장 입력받아 파일에 저장하기.
	fopen_s(&fp, "test.txt", "w");
	printf("원하는 문장을 입력하세요. \n");
	scanf_s("%s", buff,256);
	fprintf(fp, "%256s", buff);
	fclose(fp);
	
	//파일에서 문장 입력받아서 화면에 출력하기.
	fopen_s(&fp, "test.txt", "r"); 
	printf("입력하신 문장은\n");
	fscanf_s(fp, "%256s", buff, 256);
	printf("%s\n", buff);
	printf("입니다.\n");
	fclose(fp);
}


7. 파일에 구구단을 가로로 저장하고 다시 화면에 출력하는 프로그램.

#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE* fp;

	//계산 결과를 저장.
	fopen_s(&fp, "Test.txt", "w");
	for (int i = 1; i < 10; i++) {
		for (int j = 1; j < 10; j++) {
			fprintf(fp, "%2d*%2d=%2d", i, j, i*j);
		}
		fprintf(fp, "\n");
	}
	fclose(fp);


	//화면에 다시 출력
	int i, j, result;
	fopen_s(&fp, "Test.txt", "r");
	for (int iCnt = 1; iCnt < 10; iCnt++) {
		for (int jCnt = 1; jCnt < 10; jCnt++) {
			fscanf_s(fp, "%2d*%2d=%2d", &i, &j, &result);
			printf("%2d*%2d=%2d ", i, j, result);
		}
		printf("\n");
	}
	fclose(fp);
}



반응형