如何在C中使用try-catch(或C中的等效项)

如何在C中使用try-catch(或C中的等效项),c,C,我需要弄清楚如何使用try-catch等价物来检查用户是否输入了太多字符,是否在“+、-、*、/、或%”之外输入了符号,或者用户是否在1或0之外输入了什么(在位s1或位s2中) C中没有try catch。只需使用if语句即可 在scanf之后,检查 if(sign!='+' && sign!='-' && sign!='/' && sign!='*' && sign!='%') //if sign is an invalid ch

我需要弄清楚如何使用try-catch等价物来检查用户是否输入了太多字符,是否在“+、-、*、/、或%”之外输入了符号,或者用户是否在1或0之外输入了什么(在位s1或位s2中)


C中没有
try catch
。只需使用
if
语句即可

scanf
之后,检查

if(sign!='+' && sign!='-' && sign!='/' && sign!='*' && sign!='%') //if sign is an invalid character
    handle_bad_input();
else
{
    int i,len=strlen(bits1);

    for(i=0;i<len;i++) //for looping through each character
        if(bits1[i]!='0' && bits1[i]!='1') //if the character is not 0 or 1
            handle_bad_input();

    len=strlen(bits2);
    for(i=0;i<len;i++)
        if(bits2[i]!='0' && bits2[i]!='1')
            handle_bad_input();
}
if(sign!='+'&&sign!='-'&&sign!='/'&&sign!='*'&&sign!='%')//如果符号是无效字符
处理错误的输入();
其他的
{
int i,len=strlen(位s1);

对于(i=0;这与try-catch无关。你只需要if语句strust我,你不想使用
setjmp
/
longjmp
@HotLicks你比我强!setjmp/longjmp是如何在C中排序try-catch,但你不想在这里使用它。对于异常处理(try/catch)没有很好的等价物在C中,这就是为什么它被添加到C++中。异常即使在用户可用时也不适合检查“用户输入太多字符”。如果你“尝试使用Do while”,则需要发布代码。还检查SCANF的返回值。
if(sign!='+' && sign!='-' && sign!='/' && sign!='*' && sign!='%') //if sign is an invalid character
    handle_bad_input();
else
{
    int i,len=strlen(bits1);

    for(i=0;i<len;i++) //for looping through each character
        if(bits1[i]!='0' && bits1[i]!='1') //if the character is not 0 or 1
            handle_bad_input();

    len=strlen(bits2);
    for(i=0;i<len;i++)
        if(bits2[i]!='0' && bits2[i]!='1')
            handle_bad_input();
}