【C语言】——解析文本文件内容

#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;
}

在这里插入图片描述
在这里插入图片描述
尚需解决的问题:只能进行单运算符表达式的计算

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nydia~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值