C语言的新功能,简单循环
我有一个名为testdata1的文件,其中有20个相同数字的值。如何添加所有这些数字,然后将这些数字打印到屏幕上。我现在有这个,但我知道这可能是最糟糕的方法,应该使用循环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
#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()
将抛出错误,而不是尝试取消对空指针的引用。但不,您是对的。感谢您指出这一点:-)