我的应用程序基本上是一个 shell,它需要 cmd [x]
类型的输入,其中 cmd
是常量,x
是可选的。所以 cmd 1
和 cmd
本身都是合法的 - 然后我假设 x
的默认参数。
我正在这样做:
char cmd[64];
scanf("%s", cmd);
int arg;
scanf("%d", &arg); // but this should be optional
如果提示中当前没有可用的整数参数,如何读取整数参数并将其设置为默认值?如果原始命令中没有给出额外的输入,我不希望提示等待。
我使用 fgetc()
和 getchar()
尝试了多个版本,并将它们与 EOF
进行比较,但无济于事。我尝试的每个版本最终都会等待该可选的整数参数。
最佳答案
简单的方法:
char b[73]; //powers of 2 magic is evil.
if(fgets(b,sizeof b,stdin) != NULL) {
char cmd[59]; //59, no command will ever be > 58. Ever I say.
int arg;
if(sscanf(b,"%58s %d",cmd,&arg) == 2) {
//handle cmd and arg
} else if(sscanf(b,"%58s",cmd) == 1) {
//handle cmd only
} else {
// :-/
}
}
关于c - 可选择从 C 语言的 STDIN 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663559/