gpt4 book ai didi

C : files manipulation Can't figure out how to simplify this code with files manipulation

转载 作者:行者123 更新时间:2023-11-30 16:02:58 24 4
gpt4 key购买 nike

我一直在研究这段代码,但我找不到问题所在。该程序确实可以编译并运行,但最终出现 fatal error 。

程序读取文件并收集数字以计算总数(将它们转换为 float 后)。然后它读取文件并显示小于 10.00 的文件

我有一个名为 myFile.txt 的文件,其中包含以下内容:

詹姆斯------ 07.50 安东尼--- 17.00

所以显示应该是

  1. 总计 24.50
  2. 这是小于 10.00 的:
  3. 詹姆斯的得分为 07.50

这是代码:

int main()
{
int n =2, valueTest=0,count=0;
FILE* file = NULL;
float temp= 00.00f, average= 00.00f, flTen = 10.00f;
float *totalNote = (float*)malloc(n*sizeof(float));

int position = 0;
char selectionNote[5+1], nameBuffer[10+1], noteBuffer[5+1];

file = fopen("c:\\myFile.txt","r");
fseek(file,10,SEEK_SET);
while(valueTest<2)
{
fscanf(file,"%5s",&selectionNote);
temp = atof(selectionNote);
totalNote[position]= temp;
position++;

valeurTest++;
}

for(int counter=0;counter<2;counter++)
{
average += totalNote[counter];
}
printf("The total is : %f \n",average);

rewind(file);
printf("here is the one with less than 10.00 :\n");

while(count<2)
{
fscanf(file,"%10s",&nameBuffer);

fseek(file,10,SEEK_SET);
fscanf(file,"%5s",&noteBuffer);
temp = atof(noteBuffer);

if(temp<flTen)
{
printf("%s who has %f\n",nameBuffer,temp);
}
fseek(file,1,SEEK_SET);
count++;
}
fclose(file);

}

我对 c 很陌生,发现它比 c# 或 java 更难。我想得到一些建议来帮助我变得更好。我认为这段代码可以更简单。你也这么认为吗?

最佳答案

您没有提及您正在使用的平台和编译器。鉴于您的文件名使用 Windows 样式的路径,我将猜测 MSVC 和 Windows。

您说代码可以编译并运行,但是您是否打开了编译器的警告?这可能会为您提供更多关于您可能正在做的错误事情的线索。

修复了一些拼写错误并添加了标准包含 header 后,我在 gcc 中编译了您的代码,该代码警告了 fscanf 格式字符串和参数之间的不匹配。特别是,您传递的是指向 char 数组的指针,这不是您的意思。您可能想阅读有关 C 语言中的数组和指针的内容,例如在 C FAQ 。该文档中的其余条目也非常有启发性。

关于C : files manipulation Can't figure out how to simplify this code with files manipulation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557504/

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