c语言文件流实现按词读取(以空格、分号等作间隔)
1.基本描述
在之前的作业中,认真编写代码,从中发现不少知识积累上的欠缺。编程中使用到的c语言文件读取,要求是按照获取到一个完整的词,并对其进行处理。
写有java或c语言源程序的.txt文件,词组与词组之间,常有 ‘.’ 、( 、) 、{ 、} 、【、 】、空格等符号间隔开来,可以利用这些符号当做截断字符串的判断条件
2.代码实现
使用C语言编写,并使用fgetc函数,每个字符读入并进行判断
下面是部分代码:
void FileRead(char filename[]){
FILE* fp;//必须要定义的指针
int i=0,counter=0;
int ch;
char str[14];//用于.txt文件按词读取,即暂存器
fp = fopen(filename, "r");//打开文件夹
do{
//读出词
do
{
ch=fgetc(fp);
if((ch>=97&&ch<=122)||(ch>=65&&ch<=90))//只有ch为字母时才录入
{
str[counter]=(char)ch;
counter++;
} }while(ch!='.'&&ch!='{'&&ch!='}'&&ch!='('&&ch!=')'&&ch!='['&&ch!=']'&&ch!=32&&ch!=59&&ch!=-1); //上为判定是否录入一完整词的判定结束条件
printf("str:%s\n",str);
/*
这中间可以编写一些关于处理字符串的操作
*/
//清空暂存的数组
for(i=0;i<14;j++)
str[i]=0;
counter=0;
}while(ch!=EOF);//当文件读完时结束
}
void main()
{
char filename1[12];
printf("请输入该文件名");
scanf("%s",&filename1);
FileRead(filename1);
}
以上就是实现的代码,可能有些粗糙,但基本使用上无大问题,下图为上机运行得结果
要注意接收fgetc获得的字符的ch需定义为int型,具体原因有时间再开一篇,网上也可以查到相关的资料与原因。