C程式設計--對檔案的輸入輸出(案例)
阿新 • • 發佈:2018-11-11
第十章
問題一(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; }