c實現功能(10)對文字內容進行計算
阿新 • • 發佈:2018-12-13
#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; }