C在字符串中搜索单词

时间:2017-01-08 12:56:18

标签: c string file search

我试图编写一个从控制台扫描字符串的代码,并尝试在.txt文件中查找相同的单词。然后打印单词并打印,如果它是正面或负面的单词。

.txt如下所示:

agree: POZ beautiful: POZ amazing: POZ deny: NEG disgusting: NEG bad: NEG

但由于某种原因,if在第二个时间不起作用。任何帮助表示赞赏。

int main()
{
char *rijec;
char *vrsta;
char line[200+1];
char konzola[420+1];
char *pch;
char pch1[500];
char rijec1[100];
char vrsta1[50];
//char *ret;

FILE *ulaz;
FILE *izlaz;

ulaz = fopen("Sentiment.txt","r");
izlaz = fopen("RezultatAnalize.txt","w");

if(ulaz == NULL || izlaz == NULL)
    exit(1);

scanf(" %420[^\n]", konzola);
printf("\nKonzola: %s\n", konzola);
pch = strtok (konzola," .!");
//strcpy(pch1, pch);
while (pch != NULL)
{
    //strcpy(pch, pch1);
    printf ("\-  %s  -", pch1);
    strcpy(pch1, pch);
    pch = strtok (NULL, " ,.!");
    //strcpy(pch1, pch);
}

 while (fgets(line, 200, ulaz) != NULL){
    rijec =(strtok(line,":"));
    vrsta =(strtok(NULL," "));
    strcpy(rijec1, rijec);
    strcpy(vrsta1, vrsta);
    printf("\n%s = %s", rijec, vrsta);
    if(strcmp(rijec1,pch1) == NULL){
        //printf("\nA match has been found");
        printf(" %s......", rijec1);
        if (strcmp(vrsta1,"POZ") == 0)
            printf("Analiza: pozitivna");
        else if (strcmp(vrsta1,"NEG") == 0)
            printf("Analiza: negativna");
    }
 }

它只是忽略了if语句,就像它不是真的一样。整个街区:

if(strcmp(rijec1,pch1) == NULL)
{
    //printf("\nA match has been found");
    printf(" %s......", rijec1);
    if (strcmp(vrsta1,"POZ") == 0)
        printf("Analiza: pozitivna");
    else if (strcmp(vrsta1,"NEG") == 0)
        printf("Analiza: negativna");
}

1 个答案:

答案 0 :(得分:0)

在......

agree: POZ

您向上扫描到: ...

rijec =(strtok(line,":"));

结果是rijec指向开头,\0(下面写为#)位于:的位置:

agree# POZ
^
rijec

然后您扫描到

vrsta =(strtok(NULL," "));

结果是vrsta指向该位置,该位置为\0(下面写为#):

agree##POZ
      ^
      vrsta

vrsta指向一个空字符串。你必须推进它 - 或者更好 - 继续使用\n作为分隔符进行标记。