如何使用程序名称和其他输入运行程序?

时间:2014-03-14 23:17:18

标签: c

int main(int argc, char *argv[]) {
       char buf[sizeof(argv)];
       fgets(buf, sizeof(argv), stdin));
}

编译程序后,我希望用户输出输出文件的名称和输入,我只希望将值保存在缓冲区中。上面一个,等待用户输入输出文件并按回车键,然后等待获取值。但我想在同一条线上做到这一点。

例如:

 $testfunction 30

1 个答案:

答案 0 :(得分:0)

尝试第二次

  

我希望用户在shell中传递2个参数,以便程序运行。第一个参数是程序名称,第二个参数是值。我想将值保存在缓冲区中。

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    if (argc != 2)
    {
       fprintf(stderr, "Usage: %s argument\n", argv[0]);
       return 1;
    }
    char buffer[strlen(argv[1]) + 1];
    strcpy(buffer, argv[1]);
    printf("Argument: <<%s>>\nBuffer:   <<%s>>\n", argv[1], buffer);
    return 0;
}

尝试第一次

如果希望程序从命令行读取输出文件名和值,可以写:

#include <stdio.h>

int main(int argc, char **argv)
{
    if (argc != 3)
    {
       fprintf(stderr, "Usage: %s file number\n", argv[0]);
       return 1;
    }
    FILE *fp = fopen(argv[1], "w");
    if (fp == 0)
    {
        fprintf(stderr, "Failed to open file %s for writing\n", argv[1]);
        return 1;
    }
    fprintf(fp, "%s\n", argv[2]);
    fclose(fp);
    printf("Wrote <<%s>> to %s\n", argv[2], argv[1]);
    return 0;
}

您可以对fprintf()fclose()进行错误检查,但很多人都不会打扰。但是,检查文件打开操作和输入操作至关重要。总是,但要经常检查那些。

如果您的源文件是rdwr.c,那么您可以输入:

$ gcc -g -O3 -std=c99 -Wall -Wextra -Werror rdwr.c -o rdwr
$ ./rdwr output.file 20314
Wrote <<20314>> to output.file
$ cat output.file
20134
$