#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int calc_string(const char* s)
{
char buf1[100] = { 0 };//左值
char oper1 = 0;
char buf2[100] = { 0 };//右值
int len = strlen(s);//得到字符串的长度
int i;
for (i = 0; i < len; i++)
{
if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')
{
strncpy(buf1, s, i);
oper1 = s[i];
break;
}
}
int start = i+1;
for (int i=start; i < len; i++)
{
if (s[i] == '=')
{
strncpy(buf2, &s[start], i-start);
break;
}
}
//printf("%s %c %s = \n",buf1,oper1,buf2);
switch (oper1)
{
case '+':
return atoi(buf1) + atoi(buf2);
case '-':
return atoi(buf1) - atoi(buf2);
case '*':
return atoi(buf1) * atoi(buf2);
case '/':
{
int a = atoi(buf2);
if (a)
return atoi(buf1) / atoi(buf2);
else
return 0;
}
default:
break;
}
}
void cutreturn(char* s)
{
int len = strlen(s);
if (s[len - 1] == '\n')
s[len - 1] = 0;
}
int main()
{
/*const char* s = "3-56=";
printf("%d\n", calc_string(s));*/
FILE* p = fopen("E:\\study\\code\\CCode\\cStudy\\测试文件\\文件测试6.txt", "r");
char buf[1024];
char buf1[1024];
while (!feof(p))
{
memset(buf, 0, sizeof(buf));
fgets(buf, sizeof(buf), p);//从文件中读取一行记录,字符串最后是以'\n'结尾的
cutreturn(buf);
int value = calc_string(buf);
memset(buf1, 0, sizeof(buf1));
sprintf(buf1, "%s%d", buf, value);
printf("%s\n", buf1);
}
return 0;
}
尚需解决的问题:只能进行单运算符表达式的计算