1. 程式人生 > >scanf函式的輸入

scanf函式的輸入

是不是也有人和我一樣,有時候輸入達不到自己預想結果呢?
又很難找到自己的錯誤,覺得輸入的格式是對的,但是儲存卻不再在自己預想的位置。
下面來講一下我關於字元和數字輸入的順序和方式的認識。
首先我們來看第一個程式碼

#include<stdio.h>
#include<stdlib.h>
void main()
{
 int a,b;
 char c;
 scanf("%d",&a);
 scanf("%d",&b);
 scanf("%c",&c);
 printf("a=%d,b=%d,c=%c",a,b,c);
 system("pause");
}

是不是感覺是一個非常簡單的程式。但有時候不懂也是會出錯的。
例如:
如果是輸入數字空格數字空格字母,輸出的的就是
在這裡插入圖片描述
最後一位儲存進去的就是空格字元。這樣就錯了。
如果輸入數字空格數字字母,輸出的就是
在這裡插入圖片描述
這樣就是我們理想的輸入的儲存單位。

我們再換一種輸入格式

void main()
{
 int a,b;
 char c;
 scanf("%d%d%c",a,b,c);
 printf("a=%d,b=%d,c=%c",a,b,c);
    system("pause");
}

按照上面的第一種方法輸入儲存在c裡面的還是空格字元,
第二中則儲存正確。
我們在看看把字元放在中間輸入的格式

void main()
{
 int a,b;
 char c;
 scanf("%d",&a);
 scanf("%c",&c);
 scanf("%d",&b);
    printf("a=%d,b=%d,c=%c",a,b,c);
    system("pause");
}
void main()
{
 int a,b;
 char c;
 scanf("%d%c%d",a,c,b);
 printf("a=%d,b=%d,c=%c",a,b,c);
    system("pause");
}

這是兩種幾乎相同的輸入格式,假如我們輸入數字空格字元空格數字。
則輸出的是
在這裡插入圖片描述


這裡輸出是預想就和我們的完全不同了。
當我們輸出數字字元數字時,就會和上面一樣輸出符合我們想要儲存是位置了
在這裡插入圖片描述
總結一下輸入的格式,
如果是要求輸入同種型別我們要在中間加入空格把他們隔分隔開,變成想要輸入
的數,而如果遇見這種轉換成不同型別的,例如轉化成字元的,在其中間就不用
輸入空格隔開,系統會自己隔開,如果輸入空格,就把那個空格字元,給了我們
要賦值的變量了,導致我們的賦值錯誤。