如何跟踪表格单元格?

时间:2014-01-24 01:42:47

标签: c arrays strtok strcmp

我写了一个比较句子并找到相似单词的程序。我应该得到的结果是表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;
}

1 个答案:

答案 0 :(得分:0)

注意每个函数都使用静态变量将字符串解析为标记。如果对同一功能进行多次或同时呼叫,则存在数据损坏和不准确结果的高可能性。因此,不要尝试同时为不同的字符串调用相同的函数,并且要注意从循环内调用其中一个函数,其中可以调用另一个使用相同函数的例程。但是,从多个线程同时调用此函数不会产生不良影响。

这是你的函数在第一次循环完成后失败的原因

x=strtok(NULL,c);

将获得x=NULL,因此循环将结束。