用C语言求和三元组

用C语言求和三元组,c,C,好的,我有一个有很多数字的文件 002003005\n 001001\n 我想把所有的数字加三,第一行的和是10,第二行是2。现在我不确定我的控制流有什么问题 #define MAXLINE 1000 int counter = 0; int inputLine[MAXLINE] = {0}; int main(void) { int sum = 0; int i = 0; int ii = 0; char c; while ((c = getchar()) != EOF)

好的,我有一个有很多数字的文件

002003005\n
001001\n
我想把所有的数字加三,第一行的和是10,第二行是2。现在我不确定我的控制流有什么问题

#define MAXLINE 1000
int counter = 0;
int inputLine[MAXLINE] = {0};
int main(void)
{
  int sum = 0;
  int i = 0;
  int ii = 0;
  char c;
  while ((c = getchar()) != EOF)
  {
    if (c == '\n')
    {
      for (ii = 0; ii < counter; ii = ii + 3)
      {
        sum = sum + ((inputLine[ii] - '0') * 100) + ((inputLine[ii+1] - '0') * 10) + ((inputLine[ii+2] - '0') * 1);
      }
      printf("%d\n", sum);
      sum = 0;
      counter = 0;
    }

    inputLine[i] = c;
    i++;
    counter++;
  }


  return 0;
}
#定义MAXLINE 1000
int计数器=0;
int inputLine[MAXLINE]={0};
内部主(空)
{
整数和=0;
int i=0;
int ii=0;
字符c;
而((c=getchar())!=EOF)
{
如果(c=='\n')
{
对于(ii=0;ii<计数器;ii=ii+3)
{
总和=总和+((输入线[ii]-“0”)*100+((输入线[ii+1]-“0”)*10+((输入线[ii+2]-“0”)*1);
}
printf(“%d\n”,总和);
总和=0;
计数器=0;
}
输入线[i]=c;
i++;
计数器++;
}
返回0;
}

当您到达行尾时,您没有重置
i

插入:

i = 0;
计数器=0
行之后

您还需要包括此块:

inputLine[i] = c;
i++;
counter++;
else
中,因为它不应该发生在每行末尾的回车中


一旦你这样做了,你会(希望)注意到
i
计数器
在每次循环中总是包含相同的值,所以它们都不需要存在。

如果你的
char
类型默认为
unsigned
,那么你的结束条件就不好了

char c;
while ((c = getchar()) != EOF)

您应该将c声明为
int
,因为
EOF
不能在0..255的值范围内表示
EOF
定义为
int
类型的负整数,用于指示文件结束条件。

也许
计数器
用于计算行数?在这种情况下,OP会将
计数器+++
移动到
计数器=0
中的位置,如果
中,则在循环之前和每次迭代之后将i初始化为相同的值听起来是多余的-在循环开始时执行一次。