?? 66.c
字號:
/*文件類的各種函數的用法及特點*/
#include<stdio.h>
void file1();
void file2();
void file3();
void file4();
void file5();
void file()
{
// file1();
// file2();
// file3();
// file4();
file5();
}
void file1()
{
FILE *fp;
char f[20];
char ch;
printf("enter f:\n");
scanf("%s",f);
if((fp=fopen(f,"r"))==NULL) //文件的讀取格式
{
printf("the file is null");
exit(0);
}
while((ch=fgetc(fp))!=EOF)//從文件中獲取字符
// putchar(ch);
fputc(ch,stdout);
printf("\n");
fclose(fp);
}
void file2()
{
FILE *fp;
char f[20];
char ch;
printf("enter f:\n");
scanf("%s",f);
// gets(f);
// getchar();
if((fp=fopen(f,"w"))==NULL) //文件寫格式,現判斷文件是否存在,如果不存在,就創建一個
{
printf("this file is null!");
exit(0);
}
while((ch=getchar())!='#')//向文件中寫內容,直到#符號結束
fputc(ch,fp);
printf("\n");
}
void file3()
{
FILE * fp;
char file[20], str[10];
int flag=1, i=0; /* flag,=1:開始新行。i為行號 */
printf ("Enter filename:");
scanf("%s",file);
if ( (fp=fopen(file, "r")) == NULL ) /* 打開文件 */
{
printf("file1 open error.\n");
exit (0);
}
while ( fgets( str,10,fp )!=NULL ) /* 讀出字符串 */
{
if (flag)
{
printf ("%3d:%s",++i,str); /* 顯示行號 */
}
else
{
printf ("%s", str);
}
if ( str [strlen(str)-1] == '\n' )
{
flag=1;
}
else
{
flag=0;
}
}
fclose (fp);
}
void file4()
{
FILE *fp1, *fp2;
char file1[20], file2[20], s[10];
printf ("Enter filename1:");
scanf("%s",file1);
printf ("Enter filename2:");
scanf("%s",file2);
if ( (fp1=fopen(file1,"r")) == NULL ) /* 打開文件1 */
{
printf("file1 open error.\n");
exit (0);
}
if ( (fp2=fopen(file2,"w")) == NULL ) /* 打開文件2 */
{
printf("file2 open error.\n");
exit (0);
}
while ( fgets(s,10,fp1) != NULL ) /* 從fp1讀出字符串 */
fputs ( s, fp2 ); /* 將字符串寫入文件fp2中 */
fclose (fp1);
fclose (fp2);
}
void file5()
{
FILE *fp;
char f[20],ch,str[10000];
int i=0,j=0;
int x; //記錄字符串的實際長度
int y; //記錄//的位置
int a; //標記有//存在
static int b=0; //標記有/*存在
static int z=0; //標記/*的位置
static int r=0; //記錄行數
printf("enter filename!:");
scanf("%s",f);
if((fp=fopen(f,"r"))==NULL)
{
printf("file1 open error.\n");
exit (0);
}
while( fgets(str,81,fp)!=NULL)
{
a=0;
x=strlen(str);
for(i=0;i<x;i++) //記錄一次循環
{
if(str[i]=='/'&& str[i+1]=='/') //判斷是否有//存在
{
y=i; //記錄//的位置
a=1; //標記有//存在
break;
}
else if(str[i]=='/'&& str[i+1]=='*') //判斷是否有/*存在
{
z=i; //標記/*的位置
b=1; //標記有/*存在
if( str[x-3]=='*' && str[x-2]=='/') //在有/*存在的情況下 判斷是否有*/存在
{
b=0; // 有*/時 b=0
printf("%3d: ",r);
for(j=z;j<x;j++)
{
if(str[j]=='\n')
{
r++;
}
putchar(str[j]); //打印出本行
}//for
}
break;
}
else if(str[i]=='*'&& str[i+1]=='/') // 當/* 與*/不再同一行時
{
b=0;
printf("%3d: ",r);
++r;
putchar(str[i]);
putchar(str[i+1]);
putchar(str[i+2]);
break;
}
}
if(a==1) //打印出有//存在的注釋行
{
printf("%3d: ",r);
for(j=y;j<x;j++)
{
if(str[j]=='\n')
{
r++;
}
putchar(str[j]);
}
}
if(b==1 ) //打印出/* 與 */之間的所有行
{
printf("%3d: ",r);
for(j=z;j<x;j++)
{
if(str[j]=='\n')
{
r++;
}
putchar(str[j]);
}//for
}//for
}//while
}//file5
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -