2017-02-28 49 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

相关问题