当用户尝试使用带有特殊符号的命令行参数启动程序时,如何编写显示错误的代码?当用户仅键入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/

10-11 18:42