【问题标题】:How can I track a table cell?如何跟踪表格单元格?
【发布时间】:2014-01-24 01:42:47
【问题描述】:

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

【问题讨论】:

  • 那么你想比较A和B,找出A中存在B中的单词吗?
  • “追踪手机号码”是什么意思? (另外:c 应该是 2 个 chars:一个也可以包含 nul 终止符)
  • 定义你的“相似”。
  • 是的,我想要两个表中每个单词相似的表 A 上的第一个字母的位置。 “相似”是指它们具有完全相同的字母。感谢 c[1],我会记住的。
  • @JimuX 要将结果存储在哪里?

标签: c arrays strtok strcmp


【解决方案1】:

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

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

x=strtok(NULL,c);

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

【讨论】:

  • 谢谢你,我会按照你说的去做。你能告诉我一种方法来知道表格中每个相似单词的第一个字母的单元格的数量吗?
  • oh~也许你可以将一个数组初始化为0,当找到相似的单词时,将数组的索引设为1。:)
  • 但练习的目的是找出两个表中相似的每个单词的第一个字母的单元格的编号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2013-03-21
  • 1970-01-01
  • 2018-11-15
相关资源
最近更新 更多