我正在計算空格前一個單詞的字母數。例如。 「你好!」是我的輸入字符串,我正在計算第一個單詞中的字母數。這裏的while循環有什麼問題? C基礎知識
#include<stdio.h>
#include<string.h>
int main()
{
char a[30];
int count = 0;
printf("Enter the string.\n"); // Enter hello how as string here.
gets(a);
for (i = 0; a[i] != '\0'; i++)
{
while(a[i+1] != ' ')
count++;
}
printf("%d\n",count);
}
這是一個更大的代碼的一小部分,我其實期待計數的值是5,但是它進入某種無限循環對此我無法弄清楚的。如果我使用而不是while,我會得到預期的答案。我知道獲取不是很可靠,一旦我在編程中變得更好,我就不會使用它,所以你會發布關於循環而不是獲取的答案。謝謝。
您的計數變量是有點意義的,因爲你可以使用一個以上的條件你的測試表達式,然後用'i'作爲打印結果。 'for(i = 0; a [i] &&(a [i]!=''); ++ i);'。並且不要使用'gets()'。它的邪惡。改用'fgets()'。 – WhozCraig
感謝您在代碼中指出有關空字符的錯誤,但這只是我在此處輸入的錯誤。 @WhozCraig:關於循環是的,多數民衆贊成我的意思是當我說它是一個更大的程序的一部分,我希望這是我的外部循環,然後我可以把更多的發言。 –
啊,如果是這種情況,你仍然可以使用單個for-statement來對當前字進行字符計數。之後會做些什麼更棘手的事情。但高興這是有道理的。 – WhozCraig