如何从c中没有空格的字符串输入一次一个字符?

假设,“5181 2710 9900 0012” – 是一串数字。我需要一次取一个数字作为数字串的输入而没有空格来进行算术运算。 所以,我写的,

int a[20]; for(int i=0;i<16;i++) { scanf("%d",&a[i]); } 

但它没有给我预期的结果。 但是当我使用“%1d”代替“%d”时,它给了我预期的结果。 那么,它是如何工作的?

由于scanf是printf的反转,你可以通过使用修饰符打印任何数字来validation这一点(只是一点点提示)。 *

通常,格式之前的数字是“宽度”修饰符。 在这种情况下,它意味着您只将一个字节读入一个数字。 如果指定%d,则它可以是任意长度的数字。

例:

 #include  int main() { int a; sscanf("1234", "%d", &a); printf("%d\n", a); // prints 1234 sscanf("1234", "%1d", &a); printf("%d\n"ma); // prints 1 } 

*)对于这种特殊情况,这似乎是错误的。 但是,在指定%d格式时,数字不会被截断,因为这会改变数字的含义。 但是,在许多情况下,您可以尝试使用printf来预测scanf的行为。 但是,当然,阅读手册或文档总是更有帮助的方法:)