当用户尝试使用带有特殊符号的命令行参数启动程序时,如何编写显示错误的代码?当用户仅键入1或0时,我的程序可以工作,并且我知道如何保护我的程序不受其他数字的影响,但是我不知道如何处理特殊符号。
用特殊符号表示,例如“ $#”等。我试图应用您的解决方案,但仍然无法正常工作。问题是,当我使用“ 121”运行程序时,它可以正常工作,它显示错误“ ERROR”,但是当涉及到以“ 1#”运行程序时,它只是停止工作,而没有显示“ ERROR”
C语言
int main(int argc, char *argv[])
{
FILE *in = argc > 1 ? fopen(argv[1], "r") : stdin;
double x;
if (in != NULL){
while (fscanf(in, "%lf", &x) == 1){
if(x != 1 && x != 0){
printf("ERORR");
return 1;
}
最佳答案
目前尚不清楚什么是“特殊标志”。我假设您引用的输入不正确,这将防止代码看起来跳过错误的令牌。考虑一个不同的循环,该循环将读取令牌并验证输入。假设每个令牌最多20个字符。
#include <stdio.h>
#include <stdboolh>
static bool scan_int(FILE *fp, int *res_p)
{
bool first = true ;
while ( 1 ) {
int r = sscanf(work, " %d", res_) ;
if ( r == 1 ) return true ;
if ( r == EOF ) return false ;
// print a message on first error
if ( first ) { printf("ERROR\n") ; first = false ; };
// try skipping a character ;
getchar() ;
}
int main(int argc, char *argv[])
{
FILE *in = argc > 1 ? fopen(argv[1], "r") : stdin;
if (in != NULL){
int x ;
while ( scan_int(in, &x) ) {
if ( x != 0 || x != 1)) {
printf("ERROR\n");
return 1;
} ;
...
}
}
}
从帖子中看,如果输入值无效(0、1),则代码应忽略非数字(特殊符号),但退出(从main返回1)。保持这种逻辑。
关于c - 特殊符号和命令行参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58893334/