#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//实现对文本内容的计算
//首先实现对文本中每一行内容的计算
int calcString(char *s){
char num1[100] = {0};
int oper = 0;
char num2[100] = {0};
//将读取的字符串进行拆分,截取每一部分的内容
int len = strlen(s);
int i;
for(i = 0; i < len; i++){
if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/'){
strncpy(num1, s, i);
oper = s[i];
break;
}
}
//确定第二个数字部分的截取
int start = i + 1;
for(;i < len; i++){
if(s[i] == '='){
strncpy(num2, &s[start], i - start);
}
}
//获得计算的结果
switch (oper) {
case '+':
return atoi(num1) + atoi(num2);
case '-':
return atoi(num1) + atoi(num2);
case '*':
return atoi(num1) + atoi(num2);
case '/':
{
int temp = atoi(num2);
if(temp)
return atoi(num1) + atoi(num2);
else
return 0;
}
}
}
//去处每行末尾的换行符
void removeEnd(char *s){
int len = strlen(s);
if(s[len - 1] == '\n'){
s[len - 1] = 0;
}
}
int main(){
//设置读取文件的字符缓冲区
char buf[1024] = {0};
char buf1[1024] = {0};
//读取文件
FILE *p = fopen("D:\\test\\a.txt", "r");
FILE *p1 = fopen("D:\\test\\b.txt","w");
while(!feof(p)){
//然后读取文件的每一行进行计算
memset(buf, 0, sizeof (buf));
fgets(buf, sizeof(buf), p);
//去处每行末尾的换行符
removeEnd(buf);
int value = calcString(buf);
//将得到的内容进行组合
memset(buf1, 0, sizeof (buf1));
sprintf(buf1, "%s %d\n", buf, value);
//将读取出来的内容保存到另一个文件中
fputs(buf1,p1);
}
fclose(p);
fclose(p1);
return 0;
}
c实现功能(10)对文本内容进行计算
猜你喜欢
转载自blog.csdn.net/hc1151310108/article/details/82940073
今日推荐
周排行