c - 在 C 语言中,如何将单个变量设为 're-initialize' 并在 while 循环的每次迭代中使用它?

标签 c string parsing while-loop

基本上,我试图找到我正在解析的文件的每一行中所有数字的平均值。我非常接近找出解决方案。我设法成功读取了所有数字,并且“添加”在第一次迭代时工作正常,但在第一次迭代之后,数字被添加到前一次迭代的总和中。有没有一种方法可以简单地重用同一个变量,在一次迭代后打印它的值,然后将其初始化为 0 并在下一次迭代中再次使用它,等等?这是我想要得到的示例(在伪代码中,我不要求将其打印到控制台):

1,2,3,4,5
x = 1;
x = 3;
x = 6;
x = 10;
x = 15;
15
2,3,4,5
x = 2;
x = 5;
x = 9;
x = 14;
14
etc. 

这是我现在的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


int main(int argc, char *argv[]){
    int  i = 0;
    int x = 0;
    char *token;
    char line[300];
    char s[2] = ",";
    FILE *fp = fopen(argv[1], "r");
    while(fgets(line, 299, fp)){
        token = strtok(line, s);
        while(token!=NULL){
        x = x + atoi(token);
        printf("%s\n", token);
        printf("%d\n", x);
        token = strtok(NULL, s);
    }

    }

我知道我很接近,只需要一点小费。我不是要你复制和粘贴解决方案,而是给我一个提示来帮助我完成它。谢谢。

最佳答案

在内部循环之前或之后添加 x = 0

while(fgets(line, 299, fp)){
   token = strtok(line, s);
   while(token!=NULL){
        x = x + atoi(token);
        printf("%s\n", token);
        printf("%d\n", x);
        token = strtok(NULL, s);
    }
    x=0;
}

关于c - 在 C 语言中,如何将单个变量设为 're-initialize' 并在 while 循环的每次迭代中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856969/

相关文章:

php - 从以空格分隔的文本文件创建 PHP 数组

javascript - 如何在 JavaScript 中构建树模式匹配算法?

c - 使用 mmap 在 C 中共享内存中的结构

c - 复合文字是否会删除任何先前的字段?

java - 计算字符串中的匹配字符数

检查字符串是否为回文(CodeSignal 测试用例问题)

c - 找出为什么我的 RC4 实现没有产生正确的结果

Java/C/C++/C#/PHP 到 Pascal 转换器?

javascript - NodeJS 缓冲区 - ASCII 二进制表示

java - 无法解析二维 json 数组并显示其内容