⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 66.c

📁 这是一个经过本人一个月的时间自己做的关于c的小程序
💻 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 + -