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

来源:互联网 发布:plc和单片机有什么区别 编辑:程序博客网 时间:2024/06/03 18:32

代码功能:将一个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!");      } 


原创粉丝点击