2011-01-28 140 views
1

編寫另一個程序,它讀取一個txt文件,並將所有字母和空格(如\ 0)存儲在char數組中,並忽略其他所有內容。這部分工作。in C:讀取輸入字符串,在char數組中找到

現在我需要做的是讀取用戶輸入的字符串,然後在數組中搜索該字符串,然後在每次出現時都打印該字。即時通訊在C/I/O可怕,你如何閱讀一個字符串,然後在字符數組中找到它?

回答

2
#include <stdio.h> 
... 

char str [80]; 
printf ("Enter your word: "); 
scanf ("%s",str); 

char* pch=strstr(fileData,str); 
while (pch!=NULL) 
{ 
printf ("found at %d\n",pch-fileData+1); 
pch=strstr(pch+1,str); 
} 
+2

+1爲正確的軌道。如果您想要將第一個空格視爲輸入字符串的結尾,則scanf的「%s」格式很好。如果你想要整行,你需要一個「%[^ \ n]」。然後,您應該確保通過放置ala`(「%。* s」,sizeof str,str)``來讀取不超過80個字符。而且,您應該使用strstr()而不是strchr()來查找子字符串。 – 2011-01-28 01:18:30

+0

@Tony謝謝。非常好的指針。 – bioffe 2011-01-28 01:22:42

0
  1. 用戶輸入字符串中讀取爲字符數組以及(原因字符串是基本上字符*無論如何在C)

  2. 使用字符串匹配算法等博耶-摩爾或Knutt- Morris-Pratt(更通俗的稱爲KMP) - 谷歌爲它,如果你喜歡這些C的實現 - 因爲它們是整齊,經過嘗試和測試的方式來搜索字符串的子字符串和模式匹配和所有。

  3. 對於這些indexOf情況中的每一個,打印出單詞的位置可能是?或者如果你願意,發生的次數。

一般的C字符串函數列表,發現here,說,是的格式STR *或* STRN,取決於需求。

0

一個for循環內另一個for循環(稱爲嵌套循環)。仔細檢查數組中的所有字母,併爲每個字母遍歷輸入字符串中的所有字母,並確定數組的該部分是否與輸入字符串匹配。如果有,請打印。

相關問題