2016-07-27 76 views
0

我想測量我的輸入有多少個數字。 如果我輸入以下行:1 2 65 3 4 7, 我想輸出爲8。但什麼,我得到的是1 2 3 4如何找到輸入的長度

#include <stdio.h> 
int main(void) { 
    int data; 
    int i = 1; 
    while (i <= sizeof(data)) { 
     scanf("%d", &data) 
     printf("%d", i); 
     i++; 
    } 
} 
+6

'sizeof(data)'在*編譯時*評估爲int類型的大小。它與您的輸入行有多少個數字無關。 –

+0

您必須有一些觸發點才能結束輸入,然後您可以對它們進行計數並顯示計數。 – AdiechaHK

+0

'sizeof(data)'是不變的數據類型的大小(int)可能是4.因此,無論您輸入什麼內容,您的循環都會運行4次。 – Holger

回答

3

要打印i具有在不相對於輸入所有。因此,無論您的輸入是什麼,您都會得到1234

sizeof(data)sizeof(int)相同,即系統中值爲4的常數。

如果要算號碼的數量和不關心個體數的值,你可以這樣做:

#include <stdio.h> 
#include <ctype.h> 

int main(void) { 
    char s[1024]; 
    char* p; 
    int i = 0; 
    fgets(s, 1024, stdin); 
    p=s; 

    while (*p != '\0') 
    { 
     if (!isdigit(*p)) 
     { 
      p++; 
     } 
     else 
     { 
      i++; // Found new number 

      // Search for a delimiter, i.e. skip all digits 
      p++; 
      while (*p != '\0' && isdigit(*p)) 
      { 
       p++; 
      } 
     } 
    } 

    printf("We found %d numbers", i); 

    return 0; 
} 

輸出:

We found 6 numbers 

注意到,此代碼將接受任何非數字輸入作爲分隔符。

1

在while循環之前放置scanf,並在while循環之後移動printf。

+1

然後輸出將是'4' - 總是... – 4386427

+0

這個答案如何得到2 upvotes? – 4386427

-1

我也提供解決方案,根據我的openion。

#include <stdio.h> 
int main(void) { 
    int data = 1; 
    int i = 0; 
    // here data != 0 is trigger point for end input, 
    // once you done with your inputs you need to last add 0 to terminate 
    while (data != 0) { 
     scanf("%d", &data) 
     printf("Collected Data: %d", data); 
     i++; 
    } 
    printf("Total number of inputs are %d.", i); 
} 

希望這個解決方案可以幫助你。

+0

這不是OP所要求的。他只想在一行中輸入一些以空格分隔的數字並計算輸入的數字數量。 –

+1

SO不是教程網站。 – Michi

-1

這裏是我的解決方案:

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

int main() { 
    int i = 0; 
    int data[100]; // creating an array 

    while(1) { // the loop will run forever 
     scanf("%d", &data[i]); 

     if (data[i] == -1) { //unless data[i] = -1 
      break; // exit while-loop 
     } 

     i++; 
    } 

    printf("%d\n", data[2]); // print 2nd integer in data[] 

    return 0; 
} 

不要忘了按下回車鍵,一旦你進入一個int。程序輸出:

2 
56 
894 
34 
6 
12 
-1 

894 

希望有幫助。 :)

+0

SO不是教程網站。 – Michi