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!"); }
阅读全文
1 0
- C语言------文件操作+字符串里的运算
- C语言里的字符串
- C 语言里的字符串---字符数组
- C语言里字符串的解析
- C语言里字符串的解析
- C语言的字符串操作
- C语言的字符串操作
- C语言里时间函数的操作
- C语言里的写文件
- 回顾C语言文件里的知识
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C语言里的左移和右移运算
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointList.cs)
- java 23种设计模式 深入理解
- HDU 2062:Subset sequence
- fzu 2244 Daxia want to buy house
- linux(十)时间同步
- C语言------文件操作+字符串里的运算
- No rule to make target `include/config/auto.conf', needed by `include/ config/kernel.release'. stop
- LeetCode 之 Median of Two Sorted Arrays
- MP3播放
- C++——面向对象(二)——默认的构造函数(2)
- 通过伪类选择器调整链接属性
- Java多线程”JUC”集合中的CopyOnWriteArraySet
- 编译gnutls找不到nettle3.1的问题
- 实现基于Haproxy+Keepalived负载均衡高可用架构