C语言------文件操作+字符串里的运算

代码功能:将一个txt文档里面的表达式计算出来

实现思路:

1.打开文件并获取内容

2.将文件里的字符转化为整数来进行运算(定义一个函数,将整数和运算符从一串字符里单独拿出来,使字符串的数字变为一个整数,再进行整数的运算)

3.将计算结果追加到表达式的右边并让最后的结果输入到另一个文件里面

代码实现:

#include <stdio.h>
#include <string.h>
int count(char *p)  //一个用来实现字符串中运算的函数 
{
	int i,j;
	char buf[100]={0};    //存储加号左边的数值 
	char buf1[100]={0};	  //用来存储加号右边的数值 
	char sign;            //用来存储运算符号 
	int len=strlen(p); 	//得到字符串的长度 
	for(i=0;i<len;i++){
		if(p[i]=='+'||p[i]=='-'||p[i]=='*'||p[i]=='/'){    //寻找加号和加号左边的数值 
			strncpy(buf,p,i);
			sign=p[i];
			break;
		}
	}
		for(j=i+1;j<len;j++){         //寻找加号右边的数值 
			if(p[j]=='='){
			strncpy(buf1,&p[i+1],j-i-1);
			}
		}
	switch(sign){                   //进行表达式的运算 
		case'+':
			return atoi(buf)+atoi(buf1);  //将字符串转化为整数 进行运算 
		case'-':
			return atoi(buf)-atoi(buf1);
		case'*':
			return atoi(buf)*atoi(buf1);	
		case'/':
			{
			int a=atoi(buf1);
			if(a){
				
				return atoi(buf)/atoi(buf1);
			}
		
		}
			
	}
	
}
void eat_return(char *s){     //用来 实现将buf数组后面的换行符去掉 
	int len = strlen(s);
	if(s[len-1]=='\n'){
		s[len-1]=0;
	}
}
void main ()
{
	char buf[100];
	char buf1[100];
	FILE *p=fopen("d:\\森\\a.txt","r");  //用只读的方式打开一个文件 
	FILE *p1=fopen("d:\\森\\b.txt","w");//用只写的方式打开一个文件
	while(!feof(p)){                 //循环直到文件的结束 
		memset(buf,0,sizeof(buf));  //初始化 
		fgets(buf,sizeof(buf),p);   //将一个文件里一行的字符串存储到buf里,字符串以'\n'的方式结尾 
		eat_return(buf);
        int value=count(buf);     
        memset(buf1,0,sizeof(buf1));
		sprintf(buf1,"%s%d\n",buf,value);
		fputs(buf1,p1);	           //将buf1的数据输入到P1指向的文件里 
	}	
	fclose(p);                //关闭p所指向的文件 
	fclose(p1); 	         //关闭p1所指向的文件 
	
    printf("END!");
     
 } 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值