1. 程式人生 > >C程式設計--對檔案的輸入輸出(案例)

C程式設計--對檔案的輸入輸出(案例)

第十章

問題一(fputc()函式的使用)

從鍵盤中輸入一些字元,逐個把他們送到磁碟上去,直到使用者輸入一個’#'鍵為止;

#include<stdio.h>
#include<stdlib.h>//用於 exit(0);

int main(){
	FILE * fp;
	char ch,filename[10];
	printf("請輸入檔名: ");
	scanf("%s",filename);

	if((fp=fopen(filename,"w"))==NULL){
		printf("無法開啟此檔案");
		exit(0);
	}

	ch=getchar();
	printf("請輸入內容:\n");
	ch=getchar();
	while(ch!='#'){
		fputc(ch,fp);
		putchar(ch);
		ch=getchar();
	}
	fclose(fp);
	putchar(10);

	return 0;
}

問題二(fputc()和fgetc()函式的使用)

檔案的複製

#include<stdio.h>
#include<stdlib.h>//用於 exit(0);

int main(){
	FILE * in, * out;
	char ch,filename1[10],filename2[10];

	printf("請輸入被複制的檔名:");
	scanf("%s",filename1);

	printf("請輸入複製後的檔案:");
	scanf("%s",filename2);

	if((in=fopen(filename1,"r"))==NULL){
		printf("無法開啟%s",filename1);
		exit(0);
	}
	if((out=fopen(filename2,"w"))==NULL){
		printf("無法開啟%s",filename2);
		exit(0);
	}
	while (!feof(in))
	{
		ch=fgetc(in);
		fputc(ch,out);
		putchar(ch);
	}
	putchar(10);
	fclose(in);
	fclose(out);
	
	return 0;
}

問題三(fputs()、fgets()的用法)

從鍵盤中輸入若干字串,並對他們按字母大小的順序排序,然後把排好序的字串送到磁碟上去

#include<stdio.h>
#include<stdlib.h>//用於 exit(0);
#include<string.h>//用於strcpy(),strcmp()

#define N 3

int main(){

	FILE *fp;
	char str[N][20],temp[20],filename[20];

	//printf("請輸入被複制的檔名:");
	//scanf("%s",filename);
	
	if((fp=fopen("D:\\AAABBB\\TXTFile\\data.txt","w"))==NULL){
		printf("無法開啟%s",filename);
		exit(0);
	}

	printf("請輸入字串:\n");
	for(int i=0;i<N;i++){
		gets(str[i]);
	}

	int min;
	//選擇排序法
	for (int i = 0; i < N-1; i++){
		min=i;
		for (int j = i+1; j < N; j++){
			if(strcmp(str[min],str[j])>0)
				min=j;
		}
		if(min!=i){
			strcpy(temp,str[i]);
			strcpy(str[i],str[min]);
			strcpy(str[min],temp);
		}
	}
	printf("排序後的字元陣列(二維)\n");
	for (int i = 0; i < N; i++){
		fputs(str[i],fp);
		fputc('\n',fp);
		puts(str[i]);//等於  printf("%s",str[i]);
	}
	fclose(fp);
	putchar(10);//等於  printf("\n");

	return 0;
}