2011-04-07 70 views
1
const char * strstr (const char * str1, const char * str2); 
     char * strstr (  char * str1, const char * str2); 

將指針返回到STR2的在STR1的第一次出現,或一個空指針如果STR2不是STR1的一部分的strstr()函數和 「 r n」 個

比方說char* str2=new char(5000)是這樣聲明,文件中的字符被讀入str2

如果str2包含多個'\r'或'\n'字符,strstr是如何工作的。一旦它遇到'\n'或'\r'還是繼續?另外,如果它確實繼續,有什麼辦法可以在str2的某個點停止功能?

+0

哎呦感謝.. – Jake 2011-04-07 22:43:07

回答

1

它保持下去,直到字符串的結尾('\0'

+0

有什麼辦法在某一個點「停止」它到達字符串結束之前? – Jake 2011-04-07 22:48:22

+1

您可以在希望strstr停止的位置臨時插入一個\ 0(然後如果您希望以後再次使用該字符串,則將其替換爲粗體字符) – bdk 2011-04-07 22:53:53

+0

@bdk:您只能將'\ 0'插入非 - 包括字符串。這樣做是一個糟糕的主意 - 特別是如果可能有多個線程使用字符串。 – 2011-04-07 23:50:45

1

strstr()函數停在並返回str1中的第一個字符,其中字符串str2被找到。因此,如果查找str2 = "\r\n";,它將返回指向第一個「\r」的指針,緊接着是「\n」。如果遇到'\r'後跟「\n」以外的內容,則會忽略此「\r」。這些函數只有在找到想要的字符串時纔會停止搜索,或者遇到str1中的NUL'\0',標記字符串的結尾。

如果您正在尋找字符集"\r\n"中的第一個字符,那麼您需要查看strspn()和/或strcspn()函數。