【发布时间】:2018-05-07 17:30:32
【问题描述】:
目前卡在一个项目上,试图将用户给出的数字放入 .txt 文件中。它应该在循环中,直到用户输入 0。前两个数字是整数,最后一个是浮点数。我当前的代码无限循环printf,并且不允许scanf。我必须使用fwrite,因为他希望它处于二进制模式。问题出在我不断得到的循环中
请输入商品数据(零件编号、数量、价格):
这是我的项目代码。
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("This program stores a business inventory. \n");
FILE *fp;
fp = fopen("inventory.txt", "w+b");
if(fp == NULL)
{
printf("Can't open a file. \n");
return 0;
}
int a[2];
float b;
while(1)
{
printf("Please enter item data (part number, quantity, price): \n");
scanf("%d", &a[0]);
scanf("%d", &a[1]);
scanf("%f", &b);
fwrite(a, sizeof(a[0]),sizeof(a)/sizeof(a[0]), fp);
fwrite(&b, sizeof(b),1,fp);
}
fclose(fp);
return 0;
}
该项目希望我“编写一个程序来反复要求用户输入有关企业库存的信息(项目部分 数量、数量、价格),然后将信息保存到名为 inventory.txt 的文件中。当用户为零件编号输入 0 时,程序将停止循环。”
用户输入是 3、1、3.4
【问题讨论】:
-
要将数字写入文本文件,请使用
fprintf。输出文件怎么可能是文本文件和二进制文件?但是对于这个问题,您没有测试 anything 更不用说导致循环中断。这就是为什么它是无限的。 -
我可以推荐我的beginners' guide away from scanf吗?
-
@WeatherVane 但它不是文本文件。为什么它仍然被命名为
.txt仍然是 OP 的秘密 ;) -
无法重现您的“我当前的代码无限循环 printf 并且不允许 scanf”。
-
您的实际问题是什么?如果你想退出循环然后测试 ==0