通过debug看了下,a是能正常识别为2,ch也是能正常识别为*,b却取法正常识别
#include <stdio.h>
#include <string.h>
int Sum(int a, int b, int ret, char ch)
{
switch (ch) {
case '+':
ret = a + b;
break;
case '-':
ret = a - b;
break;
case '*':
ret = a * b;
break;
case '/':
ret = a / b;
break;
default:
break;
}
return ret;
}
void WriteFile()
{
char* file[4096] = { 0 };
FILE* fp = NULL;
fopen_s(&fp, "1.txt", "w");
if (fp == NULL)
{
perror("fopen_s error");
return;
}
fputs("2*4=\n", fp);
fputs("9/3=\n", fp);
fputs("2+4=\n", fp);
fputs("4-2=\n", fp);
fclose(fp);
}
void WriteOperation()
{
int a, b, ret = 0;
char ch;
char buf[4096] = { 0 };
char buf2[4096] = { 0 };
char buf3[4096] = { 0 };
FILE* fp = NULL;
fopen_s(&fp, "1.txt", "r");
if (fp == NULL)
{
perror("fopen_s error");
return;
}
while (1)
{
fgets(buf, 4096, fp);
if (feof(fp))
{
break;
}
sscanf_s(buf, "%d%c%d=\n", &a, &ch, &b);
Sum(a, b, ret, ch);
sprintf_s(buf2, 4096, "%d%c%d=%d\n", &a, &ch, &b, &ret);
strcat_s(buf3, 4096, buf2);
}
fclose(fp);
printf("%s", buf3);
}
int main(void)
{
WriteFile();
WriteOperation();
return 0;
}
#include <stdio.h>
#include <string.h>
int Sum(int a, int b, int ret, char ch)
{
switch (ch) {
case '+':
ret = a + b;
break;
case '-':
ret = a - b;
break;
case '*':
ret = a * b;
break;
case '/':
ret = a / b;
break;
default:
break;
}
return ret;
}
void WriteFile()
{
char* file[4096] = { 0 };
FILE* fp = NULL;
fopen_s(&fp, "1.txt", "w");
if (fp == NULL)
{
perror("fopen_s error");
return;
}
fputs("2*4=\n", fp);
fputs("9/3=\n", fp);
fputs("2+4=\n", fp);
fputs("4-2=\n", fp);
fclose(fp);
}
void WriteOperation()
{
int a, b, ret = 0;
char ch;
char buf[4096] = { 0 };
char buf2[4096] = { 0 };
char buf3[4096] = { 0 };
FILE* fp = NULL;
fopen_s(&fp, "1.txt", "r");
if (fp == NULL)
{
perror("fopen_s error");
return;
}
while (1)
{
fgets(buf, 4096, fp);
if (feof(fp))
{
break;
}
sscanf_s(buf, "%d%c%d=\n", &a, &ch, &b);
Sum(a, b, ret, ch);
sprintf_s(buf2, 4096, "%d%c%d=%d\n", &a, &ch, &b, &ret);
strcat_s(buf3, 4096, buf2);
}
fclose(fp);
printf("%s", buf3);
}
int main(void)
{
WriteFile();
WriteOperation();
return 0;
}