2014-01-24 94 views
0

我已經寫了一個程序來比較句子並找到相似的單詞。我應該得到的結果是每個詞的表A中的確切單元格位置相似,但我不知道該怎麼做。如何追蹤表格單元格?

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
int i=-1,j=0,q; 
char A[1000],B[1000],C[1000][1000]={0},*x,*y; 
char c[1]=" "; 

    // Just giving the words 
printf("\nGive table A:\n"); 
do 
{ 
    i++; 
    A[i]=getchar(); 
}while(A[i]!='\n'); 
A[i]='\0'; 

printf("\n\nGive table B:\n"); 
i=-1; 
do 
{ 
    i++; 
    B[i]=getchar(); 
}while(B[i]!='\n'); 
B[i]='\0'; 


    // Compairing every word of the 2 tables (A and B) 
y=strtok(B,c); 
x=strtok(A,c); 
i=0; 

while(x!=NULL) 
{ 
    while(y!=NULL) 
    { 
     q=strcmp(x,y); 
     if(!q) 
     { 
      // I need to track the cell number of table A here but how? 
      printf("%s\n",x); 
      j++; 
     } 
     y=strtok(NULL,c); 
    } 
    x=strtok(NULL,c); 
    if(C[i][0]) 
    i++; 
    j=0; 
} 
return 0; 
} 
+0

所以你想比較A和B並找到A中存在於B中的單詞? –

+1

'跟蹤細胞數量'是什麼意思? (另外:'c'應該是2個char's:一個也可以持有nul-終結符) – Kninnug

+0

定義你的「類似」。 – moeCake

回答

0

注意每個函數都使用靜態變量將字符串解析爲標記。如果對同一功能進行多個或同時呼叫,則存在數據損壞和不準確結果的高可能性。因此,不要試圖針對不同的字符串同時調用相同的函數,並且要注意從一個循環中調用其中一個函數,這些函數可能會調用另一個使用相同函數的例程。但是,從多個線程同時調用此函數並不會產生不良影響。

是這樣的原因,你的函數失敗,系統第一循環中完成

x=strtok(NULL,c); 

後會得到x=NULL,所以循環將結束。

+0

謝謝你,我會盡力照你說的去做。你能告訴我一種方法來知道每個相似單詞在表格中第一個字母的單元格數量嗎? – JimuX

+0

哦〜也許你可以用0初始化一個數組,當相似的單詞發現時,使數組的索引爲1. :) – Nibnat

+0

但練習的目的是找到每個單詞的第一個字母的單元格數兩個表中的詞類似。 – JimuX