程序应允许两种不同的模式,并根据从用户那里收到的内容计算不同的内容。 可以说模式是:
x <12; 23>
或
<12; 23>
如果包含'x',则程序会将间隔转换为二进制,否则不将其转换为十二进制。 但是,如果用户添加了该怎么办?
我有一个寻找“ x”的代码
int a;
int b;
char x;
char one;
char dot;
char two;
if((scanf(" %c %c %ld %c %ld %c", &x,&one,&a,&dot,&b, &two)!=6)||(x!='x')||(one!='<')||(dot!=';')||(two!='>')){
printf("Wrong input");
}
else{
/*Convert to binary*/
}
编辑:更改间隔的数字以使其更容易理解
答案 0 :(得分:1)
只需在scanf中指定格式即可。
int read_input(int *a, int *b)
{
int ret;
ret = scanf(" x <%d;%d>", a, b)
if (ret < 0) return -__LINE__;
if (ret == 2) {
return 1;
}
ret = scanf(" <%d;%d>", a, b);
if (ret < 0) return -__LINE__;
if (ret == 2) {
return 2;
}
return -__LINE__;
}
int main() {
int a, b;
while(1) {
int ret = read_input(&a, &b);
if (ret < 0) {
printf("wrong input!\n");
} else {
printf("%s format - %d %d\n", ret == 1 ? "first" : "second", a, b);
}
}
}
第一个scanf将要在行的开头读取x
。如果找不到,它将转换零数字并返回零。然后,我们可以使用第二种格式进入第二个scanf并进行检查。