我开发了一个C程序,该程序可以执行整数加法运算,但是我遇到的问题是它需要通过输入文本(非交互式)从stdin中获取输入。但是在测试之后,当它应该适用于多个输入时,我只能让它适用于单个输入行,假设此示例输入全部在单个输入文件中((第1行)123 + 456 =(第2行)999999999 + 1 =)。
我认为这与EOF有关,应该反复进行直到完成。我尝试将EOF放入第一个while循环中,但是输出与应该的输出有很大不同。输入格式必须保持不变,并且不能更改。无论如何,我可以让它进行操作直到输入文件结束?
#include<stdio.h>
#include<stdbool.h>
int main() {
char c;
char a[100], b[100], array[101];
int n = 0;
//It should scan through everyrthing then exit and it think start arround HERE
while ((c = (char) getchar()) != '=') {
array[n] = c;
putchar(c);
n++;
}
printf("=\n");
array[n] = '\0';
int n1 = 0, n2 = -1;
while (n1 + n2 < n) { //Splits the array into two separate char arrays
if (array[n1] == '+') {
n2 = 0;
n1 += 1;
}
if (n2 == -1) {
a[n1] = array[n1];
n1++;
} else {
b[n2] = array[n1 + n2];
n2++;
}
}
n1--;
a[n1] = b[n2] = '\0';
int i = 0, z = 0, p = 0;
char array2[101];
bool val = false;
while (n1 > 0 || n2 > 0) { //Addition Calculation
int x = 0, y = 0;
if (n1 > 0)
x = a[n1 - 1] - '0';
if (n2 > 0)
y = b[n2 - 1] - '0';
z = x + y;
if (val)
z = z + p;
if (z > 9) {
p = z % 10;
array2[i++] = (char) (p + '0');
p = z / 10;
val = true;
} else {
array2[i++] = (char) (z + '0');
val = false;
}
n1--;
n2--;
}
if (val) {
array2[i++] = (char) (p + '0');
array2[i] = '\0';
}
for (n = i - 1; n >= 0; n--) { //Print Result
printf("%c", array2[n]);
}
printf("\n");
return 0;
}
答案 0 :(得分:0)
使用scanf()
,您需要的是4衬套:
#include <stdio.h>
int main(void)
{
int a, b;
char op, ch;
while (scanf(" %d %c %d %c", &a, &op, &b, &ch) == 4 && op == '+' && ch == '=')
printf("%d+%d=%d\n", a, b, a + b);
}