对于文件的读写操作处理,指针头

对于文件的读写操作

#include<stdio.h>
#include "scanner.h"
int main()
{
	FILE * file;
	file = fopen("abc.txt","r");
	if(file == NULL)
		printf("The file is note exist!");
	WORD * wPtr = wordScanner(file);
	//printf("%d---%s\n",wPtr->code,wPtr->word_meaning);
	while(1)
		getchar();
	return 0;
}

完成一个文件的输出,WORD类型的函数

void file_write(char *word)
{
	FILE * file;
	file = fopen("out.txt","a");
	fprintf(file,"%s",word);
	fclose(file);
}

这个是文件的写入

WORD * wordScanner(FILE * file)
{
	int i;
	char a[10000]; //定义txt转化所有的文本
	int num[100][100];
	char letter[100][100];
	WORD *ret = new WORD();
	char ch = NULL;
	char variable[20] ;
	char *des;//存储description描述
	int state = 0;
	int n = 0;
	while(ch != EOF)
	{
		ch =  fgetc(file);

		//处理注释 46
		if(ch == '/') 
		{
			ch = fgetc(file);
			if(ch == '/')
			{
				//文件末不是换行符\n
				while(  ch != '\n')//ch!= ' ' &&
				{
					ch = fgetc(file);
					//nothing happen				
				}
				ret->code = LINE_ZHUSHI;
				ret->word_meaning = "//";
				char str[100];
				sprintf(str, "%d---%s\n", ret->code,ret->word_meaning);
				file_write(str);
			}
			//注释分割47+48
					
			else if(ch == '*')
			{
				ch = fgetc(file);
				ret->code = L_ZHUSHI;
				ret->word_meaning = "/*";
				char str[100];
				sprintf(str, "%d---%s\n", ret->code,ret->word_meaning);
				file_write(str);
				while(1)
				{
					while( ch != '*')
					{
						ch = fgetc(file);					
					}
					ch = fgetc(file);
					if(ch == '/')
					{
						ret->code = R_ZHUSHI;
						ret->word_meaning = "*/";
						char str[100];
						sprintf(str, "%d---%s\n", ret->code,ret->word_meaning);
						file_write(str);
						//return /* 和 */
						break;	
					}
				}
			}
}
}

这个就是ch在fgetc(file)作为指针头的用法,其中file是fopen()的指针类型

其次,指针头的变化,fgetc是下一个,fseek是偏移,例:fseek(file,-1,1)就是从当前位置往后走-1位(回退一位)

fseek(a,b,c) a是文件指针,b是偏移量,向后为正,回退为负,c是设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
简言之:
fseek(fp,100L,0);把stream指针移动到离文件开头100字节处;
fseek(fp,100L,1);把stream指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把stream指针退回到离文件结尾100字节处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值