我想測量我的輸入有多少個數字。 如果我輸入以下行: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++;
}
}
我想測量我的輸入有多少個數字。 如果我輸入以下行: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++;
}
}
要打印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
注意到,此代碼將接受任何非數字輸入作爲分隔符。
我也提供解決方案,根據我的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);
}
希望這個解決方案可以幫助你。
這不是OP所要求的。他只想在一行中輸入一些以空格分隔的數字並計算輸入的數字數量。 –
SO不是教程網站。 – Michi
這裏是我的解決方案:
#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
希望有幫助。 :)
SO不是教程網站。 – Michi
'sizeof(data)'在*編譯時*評估爲int類型的大小。它與您的輸入行有多少個數字無關。 –
您必須有一些觸發點才能結束輸入,然後您可以對它們進行計數並顯示計數。 – AdiechaHK
'sizeof(data)'是不變的數據類型的大小(int)可能是4.因此,無論您輸入什麼內容,您的循環都會運行4次。 – Holger