gpt4 book ai didi

c - 使用开关对文件 (C) 中的信息进行排序

转载 作者:行者123 更新时间:2023-11-30 17:19:35 26 4
gpt4 key购买 nike

因此,当使用 switch 语句运行代码时,我遇到了无限循环,但当我将其注释掉时却没有,所以我知道问题出在其中。基本上,我必须从文件中获取 char 和 float 的列表,例如:

S 15.42
G 28.00
S 56.50
H 90.00
H 10.40
S 67.90
0

我需要根据每个角色对应的组织(s=救世军等)对总数进行排序和添加,这是我的完整代码:

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

int main(){


float amount,goodTotal,habTotal,salTotal,totalTotal;
char org[1],S,H,G;
FILE *input, *output;
input = fopen("input.txt","r");
output = fopen("output.txt","w");

if (input == NULL){
fprintf(stderr, "Can't open input file input!\n");
exit(1);
}

while(fscanf(input, "%c %f", org, &amount)!=EOF){

switch (org){
case 'S':
salTotal += amount;
break;
case 'H':
habTotal += amount;
break;
case 'G':
goodTotal += amount;
break;

}

fprintf(output,"Charity Number of Donations Total Donation \n");
fprintf(output,"-----------------------------------------------------\n");
fprintf(output,"Goodwill num $%f\n",goodTotal);
fprintf(output,"Habitat for Humanity num $%f\n",habTotal);
fprintf(output,"Salvation Army num $%f\n",salTotal);
fprintf(output,"-----------------------------------------------------\n");
fprintf(output,"Total num $%f\n",totalTotal);
}


system("pause");
return 0;
}

非常感谢任何帮助!另外,最后几行中的文本“num”是每个“捐赠”数量的占位符 - 我只是还没有时间写出代码。

最佳答案

替换

while(fscanf(input, "%c %f", org, &amount)!=EOF)

while(fscanf(input, "%c %f", org, &amount)== 2)
{
fgetc(input); //Consume New line char

fscanf 返回扫描的输入数量。

正如其他人正确指出的那样

使用switch (org[0]){

关于c - 使用开关对文件 (C) 中的信息进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com