我写了一个比较句子并找到相似单词的程序。我应该得到的结果是表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 :(得分:0)
注意每个函数都使用静态变量将字符串解析为标记。如果对同一功能进行多次或同时呼叫,则存在数据损坏和不准确结果的高可能性。因此,不要尝试同时为不同的字符串调用相同的函数,并且要注意从循环内调用其中一个函数,其中可以调用另一个使用相同函数的例程。但是,从多个线程同时调用此函数不会产生不良影响。
这是你的函数在第一次循环完成后失败的原因
x=strtok(NULL,c);
将获得x=NULL
,因此循环将结束。