【问题标题】:Scanning user input into a .txt file in c将用户输入扫描到 c 中的 .txt 文件中
【发布时间】: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

标签: c file loops


【解决方案1】:

怎么样

while(1)
{
    printf("Please enter item data (part number, quantity, price): \n");


    scanf("%d", &a[0]);
    if(a[0] == 0)
        break
    scanf("%d", &a[1]);
    scanf("%f", &b);

    fwrite(a, sizeof(a[0]),sizeof(a)/sizeof(a[0]), fp);
    fwrite(&b, sizeof(b),1,fp);
}

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2013-08-14
    相关资源
    最近更新 更多