2017-02-28 51 views
-2

我要創建的字符串來檢查單詞是否是在該行與否的開始。是否有任何字面顯示c中的換行符不像<n>?

代碼是這樣的。

HELLO是在一開始的「hello」只是空間在年底檢查的Hello在開始時

char *word = "hello"; 
    strcat(word," "); 

第一部分。我使用CONCAT,因爲如果我做這樣的「你好」,我得到什麼,我真的不希望have.Here因爲我要確保這是打招呼線的起始字,如果我有任何的機會,我認爲把任何文字放在它之前,以表明它是這樣的,你好必須是行中的第一個,而不是必須有空間。

HELLO像「你好」與前面的空格線內,並最終

char *word1 = " "; 
    strcat(word1,"hello"); 
    strcat(word1," "); 

我不得不再次使用CONCAT爲好。如果我這樣寫「你好」,它不會再給我正確的答案。

HELLO在該行的最後一個字 「你好\ N」 在前面的空間

char *word2 = " "; 
    strcat(word2,"hello\n"); 

這是最主要的部分

int main() 
    { 
    int conditionNUM = 0; 

    FILE *f =fopen("file.txt","r"); 
    if(f!=NULL) 
    { 
      char *a; 
      char *b; 
      char *c; 
      chat line[256]; 
      while(fgets(line,256,f)) 
      { 
       a=strstr(line,word); 
       b=strsr(line,word1); 
       c=strstr(line,word2); 

       if(a != NULL) 
        conditionNum = 1; 

       else if(b != NULL) 
        conditionNum = 2; 

       else i(c != NULL) 
        conditionNum =3; 

       printf("%d\n",conditionNum); 
      } 
     fclose(f); 
     } 
    } 

我的文本文件是這樣的

你好,約翰

約翰你好,約翰

約翰你好

hellohello

約翰hellohello

約翰

輸出是這樣

所以我的代碼行內,但如果 「hellohello」 中的 「hellohello」 一個真正適用起始字條件以及是該行的最後一個詞,而不是它所說的不適用,這是我真正想要的,但如果它是在行內失敗的話。那麼有沒有任何C字面就好像我之前寫的

char *word = "?hello"; 

在第一個條件。如果我能解決這個問題,我將單獨獲得所有條件。

+1

請閱讀'strcat'手冊 - 參數是按順序'目的地,source' –

+3

'的strcat (「hello」,word1);'沒有意義,它有未定義的行爲,因爲它將該單詞附加到字符串文字。 –

+0

@AnttiHaapala對不起,當我寫我的問題,我只是錯過了那一部分。無論如何,在我的代碼中,格式就像目的地,源代碼,但它與我的問題無關。 – gaban

回答

0

正如您可能已經注意到的那樣,即使該單詞不在字符串的開頭,第一個條件也會匹配。

相反的strstr你應該使用strncmp第一個條件檢查僅僅是個開始:

a=strncmp(line,word,strlen(word)); 
+0

現在它的工作原理,謝謝你,先生,你先生得到了一個解決我的真正問題。 – gaban

相關問題