簡體   English   中英

為什么此代碼為所有輸入打印“ 1”?

[英]Why is this code printing “1” for all inputs?

#include <stdio.h>

int main(){
    char testChar;

    printf("%d\n", scanf("%c", &testChar));

    return 0;
}

我只想打印掃描的字符數。 但是,當我所有的輸入都具有相同的輸出時,即1。

scanf()返回成功掃描的項目數。 因此,在所有運行中, scanf()成功完成,因此您的程序將輸出1。

scanf()

成功后,這些函數將返回成功匹配和分配的輸入項的數量; 如果較早匹配失敗,則該值可以小於所提供的值,甚至為零。

如果在第一次成功轉換或匹配失敗發生之前到達輸入結束,則返回EOF值。 如果發生讀取錯誤,也會返回EOF,在這種情況下,將設置流的錯誤指示符(請參見ferror(3)),並設置errno來指示錯誤。

scanf()  
   only scans your first character input and returns 1.

您可以嘗試打印從stdin讀取的字符數。 scanf循環使用。

#include <stdio.h>
#include <stdlib.h>

int
main(void) {
    char testChar;
    int numchar = 0;

    printf("Enter characters, CTRL-C to end:\n");
    while (scanf("%c", &testChar) == 1) {
        numchar++;
    }

    printf("Number of characters scanned: %d\n", numchar);

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM