int main(int argc, char *argv[]) {
char buf[sizeof(argv)];
fgets(buf, sizeof(argv), stdin));
}
编译程序后,我希望用户输出输出文件的名称和输入,我只希望将值保存在缓冲区中。上面一个,等待用户输入输出文件并按回车键,然后等待获取值。但我想在同一条线上做到这一点。
例如:
$testfunction 30
答案 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
$