我一直在研究這個C程序代碼一段時間了,我只是很接近,但這只是一個小問題,我無法解決上帝的愛..爲什麼我的if語句不應該被激活?
我的程序是做什麼的?
它計算單詞,字符和行的數量。
示例輸入是這樣的:
b
b
輸出應
4,2,2
注意,我進入B,然後按enter鍵,然後再次輸入b,然後按Enter和pr ess ctrl-d併發生打印語句。
我的問題:
我越來越 4,3,2
我知道問題是什麼,那是因爲我的if語句激活,但是當我在我的頭上運行這個程序我不「不懂爲什麼要在所有激活..
我的代碼(完成99%,我希望)
#include <stdio.h>
#include <string.h>
int main()
{
int traversal = 1;
unsigned long int charcount = 0;
unsigned long int wordcount = 0;
unsigned long int linecount = 0;
int counter = 0;
char c;
while ((c = getchar()) != EOF)
{
charcount = charcount +1;
if((c <= 'z' && c >= 'a') || (c <= 'Z' && c >= 'A') || c == '\'')
{
if (counter >= 1)
{
wordcount++;
counter = 0;
printf("counter\n");
}
}
else
{
if (c != ' ' || c != '\n') //** This should only run if we get NO letter
{
counter++;
}
}
if (c == '\n')
{
linecount = linecount+1;
wordcount = wordcount+1;
traversal = traversal +1;
printf("%lu\n", wordcount);
}
if(c == ' ')
{
wordcount = wordcount+1;
}
}
printf("%lu %lu %lu\n", charcount, wordcount, linecount);
}
我敢肯定,如果該stateme nt我在那時只激活c不是換行符(輸入),或者它是空格...爲什麼它運行..困惑。有人可以幫我解決這個小問題嗎?
編輯:
非常感謝沙爾斯,這是真正對我part..OR和和陳述都不同,一旦你看到真相表,這兩個你會看到爲什麼..我一個貧窮的錯誤希望這個問題可以幫助誰具有相同的問題,因爲我與OR和等人....
使用所有警告和調試信息('gcc -Wall -g')進行編譯。然後**使用調試器**('gdb');您將能夠一步一步地運行程序並查詢變量的值。 – 2014-10-11 05:54:13
但是從我自己的想法輸入字母「b」並輸入應該換行。然後,如果我再次輸入b並按下輸入鍵,則它是另一個換行符。 if語句如何激活>。>? – Ray 2014-10-11 05:56:55
@射線,因爲它會**總是**是真實的!看到sharth的回答 – 2014-10-11 05:58:51