Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言的新功能,简单循环_C - Fatal编程技术网

C语言的新功能,简单循环

C语言的新功能,简单循环,c,C,我有一个名为testdata1的文件,其中有20个相同数字的值。如何添加所有这些数字,然后将这些数字打印到屏幕上。我现在有这个,但我知道这可能是最糟糕的方法,应该使用循环 #include <stdio.h> int main(int argc, char *argv[]) { FILE* fin; fin = fopen("testdata1.txt", "r"); int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n1

我有一个名为testdata1的文件,其中有20个相同数字的值。如何添加所有这些数字,然后将这些数字打印到屏幕上。我现在有这个,但我知道这可能是最糟糕的方法,应该使用循环

#include <stdio.h>

int main(int argc, char *argv[]) {
FILE* fin;
fin = fopen("testdata1.txt", "r");
int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, sum;

fscanf(fin, "%d", &n1);
fscanf(fin, "%d", &n2);
fscanf(fin, "%d", &n3);
fscanf(fin, "%d", &n4);
fscanf(fin, "%d", &n5);
fscanf(fin, "%d", &n6);
fscanf(fin, "%d", &n7);
fscanf(fin, "%d", &n8);
fscanf(fin, "%d", &n9);
fscanf(fin, "%d", &n10);
fscanf(fin, "%d", &n11);
fscanf(fin, "%d", &n12);
fscanf(fin, "%d", &n13);
fscanf(fin, "%d", &n14);
fscanf(fin, "%d", &n15);
fscanf(fin, "%d", &n16);
fscanf(fin, "%d", &n17);
fscanf(fin, "%d", &n18);
fscanf(fin, "%d", &n19);
fscanf(fin, "%d", &n20);

sum = n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9 + n10 + n11 + n12 + n13 + n14 + n15 + n16 + n17 + n18 + n19 + n20;
printf("The sum of numbers is %d.\n", sum);
fclose(fin);

return 0; 
}
#包括
int main(int argc,char*argv[]){
文件*fin;
fin=fopen(“testdata1.txt”、“r”);
int n1、n2、n3、n4、n5、n6、n7、n8、n9、n10、n11、n12、n13、n14、n15、n16、n17、n18、n19、n20、总和;
fscanf(fin、%d、&n1);
fscanf(fin、%d、&n2);
fscanf(fin、%d、&n3);
fscanf(fin、%d、&n4);
fscanf(fin、%d、&n5);
fscanf(fin、%d、&n6);
fscanf(fin、%d、&n7);
fscanf(fin、%d、&n8);
fscanf(fin、%d、&n9);
fscanf(fin、%d、&n10);
fscanf(fin、%d、&n11);
fscanf(fin、%d、&n12);
fscanf(fin、%d、&n13);
fscanf(fin、%d、&n14);
fscanf(fin、%d、&n15);
fscanf(fin、%d、&n16);
fscanf(fin、%d、&n17);
fscanf(fin、%d、&n18);
fscanf(fin、%d、&n19);
fscanf(fin、%d、&n20);
总和=n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+n13+n14+n15+n16+n17+n18+n19+n20;
printf(“数字的总和是%d.\n”,总和);
财务总监(财务);
返回0;
}

您实际上不需要使用数组。只需在阅读时将这些数字加在一起:

#include <stdio.h>

int main(int argc, char *argv[]) {
    int i, n, sum = 0;
    FILE* fin = fopen("testdata1.txt", "r");
    if (!fin) {
        fprintf(stderr,"Error: Unable to open file\n");
        return 1;
    }

    for (i=0; i<20; i++) {
        if (fscanf(fin, "%d", &n) != 1) {
            fprintf(stderr,"Error: Unexpected input\n");
            fclose(fin);
            return 1;
        }
        sum += n;
    }
    printf("The sum of numbers is %d.\n", sum);
    fclose(fin);

    return 0; 
}
#包括
int main(int argc,char*argv[]){
int i,n,和=0;
文件*fin=fopen(“testdata1.txt”、“r”);
如果(!fin){
fprintf(stderr,“错误:无法打开文件\n”);
返回1;
}

对于(i=0;i当然,您应该使用循环,这次不需要数组;只需替换单独读取每个数字的部分,并将其放入:

for (i=0; i<20; i++) {
  fscanf(fin, "%d", &n1);
  sum += n1;
}

for(i=0;i我不确定你在问什么,但我很确定你在问一个可以添加所有这些值的循环,所以我就不说了

首先,尽管您的设计中存在一些可怕的错误,其中第一个错误是如何声明变量。您确实不需要声明20个变量。您可以根据需要使用两种方法:

A.声明一个数组,以防以后需要访问所有这20个变量:
int-values[20]

在顶部声明两个int变量,一个用于求和,另一个用于存储文件中的下一个数字

对于案例A,它看起来像这样:

int main(int argc, char* argv[]){
    int sum, values[20];
    FILE* file = fopen("file");
    for (i=0; i<20; i++) {
        if (fscanf(fin, "%d", &values[i]) != 1) {
            printf("%s\n","error handling here");
            fclose(fin);
            return 1;
        }
        sum += n;
    }
}
intmain(intargc,char*argv[]){
整数和,值[20];
FILE*FILE=fopen(“文件”);

对于(i=0;i
相同的数字
循环
您已经有了一个解决方案。txt文件的格式是什么?用数组替换
n1
n2
,…,
n20
。(记住数组索引从零开始。)或者,我们也可以定义一个
n
,并使用它20次;)啊,你是对的@squemishossifrage刚刚用ear做了这件事,你应该用
替换
,而
循环换成
for
你应该检查
fopen
是否成功too@CoolGuy我错误地认为
fopen()
将抛出错误,而不是尝试取消对空指针的引用。但不,您是对的。感谢您指出这一点:-)