在命令提示符

时间:2017-11-07 03:26:36

标签: c arrays

在我的C编程类中,我们应该编写一个能够执行单元转换的程序。这是通过从用户获取文件名和所需的转换,打开文件,识别文件中的转换因子,关闭文件以及显示最终转换来完成的。

以下是教师提供的示例文件长度

INCH 0.0254
FOOT 0.3048
YARD 0.9144
MILE 1609.344
MM 1e-3
CM 1e-2
METER 1
KM 1e3
AU 149597870700.0

以下是我们需要完全复制的示例输出:

% c11 -Wall units.c -o u
% ./u lengths 12 inch foot
12.00 inch is 1.00 foot.
% ./u lengths 30 inch foot
30.00 inch is 2.50 foot.
% ./u lengths 1 foot inch
1.00 foot is 12.00 inch.
% ./u lengths 1 inch foot
1.00 inch is 0.08 foot.
% ./u lengths 1 au mile
1.00 au is 92955807.27 mile.
% ./u lengths 1000 meter km
1000.00 meter is 1.00 km.
% ./u lengths 1 inch mile
1.00 inch is 0.00 mile.
% ./u
usage: ./u <unitfile> <amount> <from> <to>
% ./u lengthz 1 inch foot
./u: can’t open file lengthz
% ./u lengths 1 inch feet
./u: no such unit "feet"

为了使这个程序有效,我必须包含哪些库?在这种情况下,从用户那里获取输入的最佳方法是什么?

更新 经过一些试验和错误,我能够让我的程序获取命令行参数。以下是我到目前为止的情况:

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

// Function to take file name from the user input
int main(int argc, char* argv[])
{
    if (argc != 5)
    {
            printf("usage: %s filename\n", argv[0]);
    }
    else
    {
            FILE *file = fopen(argv[1], "r");
            if (file == 0)
            {
                    printf("can't open file %s\n", argv[1]);
            }
            else
            {
                    int x;
                    while ((x = fgetc(file)) != EOF)
                    {
                            printf("%c", x);
                    }
                    fclose(file);
            }
    }
}

不幸的是,这只会打印文件的内容,假设程序获得5个命令行参数。

0 个答案:

没有答案