2016-07-27 5 views
0

私の入力がいくつあるかを測定しようとしています。 私は、入力、次の行場合:1 2 65 3 4 7、 iは、出力が入力とは関係のを持っていないあなたはiを印刷している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

が何であるかを私は取得しています.but 8になりたいですすべて。したがって、あなたの入力が何であれ、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つのアップボントを得ることができますか? – 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型を入力したら、Enterキーを押すことを忘れないでください。プログラムの出力:

2 
56 
894 
34 
6 
12 
-1 

894 

希望します。 :)

+0

SOはチュートリアルサイトではありません。 – Michi

関連する問題