2011-04-05 87 views
0

我得到了一个问题,我还没有解决。 我的程序需要这样的工作:一个字符串问题

Put some string: Hello World Hello World World World 
output: 4 

程序得到的字符串和子字符串,该子字符串需要在字符串中被发现和计算字符串中最常见的子字符串。

我写了一些代码,但没有成功..

int main() 
{ 
    char string[10]; 
    int i=0,x=0; 
    char find[] = "hello"; 
    gets(string); 
    while(string[i] != 0) 
     if(string[i] == find[i])) 
      x++; 
      printf("%d", x); 
    i++; 
    return 0; 
} 
+0

你见过函数strstr吗? – 2011-04-05 18:25:56

+2

我在想这应该有'家庭作业'标签 – 2011-04-05 18:26:05

+0

你应该使用fgets来代替gets,这样你就可以指定缓冲区的长度。 – jonsca 2011-04-05 18:28:18

回答

0

我想你会更好使用字符串库调用像

的char *的strstr(为const char * S1,为const char * s2) 这会返回一个指向s1中字符串s2的第一个实例的指针。如果在s1中没有遇到s2,则返回一个NULL指针。

你可以在这里找到它们的列表: http://www.edcc.edu/faculty/paul.bladek/c_string_functions.htm

0

你可以看一下第二个答案this question,基本上指出,最常见的子字符串将是一个字符串,你的情况'O'。这听起来像你可能需要单词而不是字符串,在这种情况下,只需将字符串分解成单词和数字即可。

0

斐伊川,

尝试这样

1)取1串,1个字符串数组和一个计数阵列

2)第一次扫描的字符串。由于缓冲区溢出问题,您必须使用fgets,因为get不安全,甚至LINUX/UNIX文档建议避免它。

3)将字符串分解为单词并将每个唯一单词存储在字符串数组中。

4)现在从字符串数组中取一个单词并将其与字符串进行比较并计算出现次数。你最好使用一些LIB功能类似的strstr

5)然后结束扫描计数阵列的最大数量,这将给你最大数和相应的字计数阵列

6)在相应的计商店。