我试图编写一个从控制台扫描字符串的代码,并尝试在.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");
}
答案 0 :(得分:0)
在......
agree: POZ
您向上扫描到:
...
rijec =(strtok(line,":"));
结果是rijec
指向开头,\0
(下面写为#
)位于:
的位置:
agree# POZ
^
rijec
然后您扫描到:
vrsta =(strtok(NULL," "));
结果是vrsta
指向该位置,该位置为\0
(下面写为#
):
agree##POZ
^
vrsta
vrsta
指向一个空字符串。你必须推进它 - 或者更好 - 继续使用\n
作为分隔符进行标记。