【发布时间】:2014-10-07 10:43:52
【问题描述】:
我正在学习 C 课程并且面临以下任务: 1. 加载 XCode 并开始一个新的 C 项目。如果您愿意,请删除 项目中的任何无关代码,以便您离开 只需要在你的 项目。 2.提示用户输入两个值——第一个是一个字符 “D”或“C”的值。第二个值应该是浮动的 代表金额的点值。 3. 输入每个值后,将其记录到一个文本文件中 将其保存为以下格式: D, 250\n C, 500\n 4. 测试您的程序并检查它创建的文本文件 以确保它是所需的格式。 5. 编写第二个程序,假设起始余额为 $1,000.00 并输出完整的分类帐和最终余额 对于帐户,从 您之前创建的文本文件。标记为“C”的条目 应添加到帐户和标记为“D”的条目 应该借记(减去)。
我已经创建了文件,现在进入第 5 步,我相信我知道如何从文件中获取第一个字符以检查它是“c”还是“d”,但之后我不确定如何从同一行获取数值。我该怎么做呢?这是我目前的代码(我不确定在 if/else if 语句中应该放什么):
FILE *pFile = fopen("Users/Justin/Desktop/Ledger.txt", "r");
float startingBalance = 1000.00;
char action;
if(pFile != NULL)
{
while(!(feof(pFile)))
{
fgets(action, 1, pFile);
if(action == 'D' || action == 'd')
{
}
else if(action == 'C' || action == 'c')
{
}
else
printf("IO Error: Problem with file");
}
}
return 0;
}
【问题讨论】:
-
fgets(action, 1, pFile);错了,编译器给你警告了吗? -
检查
man strtol和man fgets。不要不要尝试使用fscanf(),因为面对格式错误的输入/读取失败,该函数很难正确使用。 -
并且请使用
fgets的返回值终止读取,不要依赖feof。 (到达文件末尾时fgets返回NULL。) -
..和man fgetc
-
IOW,不要这样做:
while(!(feof(pFile))), Read here for why