我正在用 c 训练自己,我的目标是读取文件并检查其中是否有给定的句子。如果给定的句子是否存在于文件中,该函数必须分别返回“找到”或“未找到”。句子由/
符号分隔。
Example of file:
1,2,3,4/
car, house, hotel/
2,age,12/
1,2/
1,2,3,5/
house, car/
Example of word to look for:
1,2/
我的想法是每次从文件中取出一个句子并将其放入一个数组(称为ary)中,检查数组(ary)是否等于包含我正在寻找的给定句子的数组(称为句子) ,并将该数组(ary)重用于文件中的下一个句子。
我写了这段代码:
#include <stdio.h>
void main()
{
char *sentence;
FILE *my_file;
char *ary;
int size = 500;
int got;
int ind=0;
int rest;
int found=0;
sentence="1,2";
my_file=fopen("File.txt", "r");
if(my_file==NULL)
{
printf("I couldn't open the file\n");
}
else
{
ary = (char*)malloc(500*sizeof(char));
while((got=fgetc(my_file))!=EOF)
{
if(got!='/')
{
ary[ind++]=(char)got;
}
else
{
ary[ind++]='\0';
rest = compare(sentence,ary);
if(rest==0)
{
found =1;
printf("found\n");
return;
}
ind=0;
free(ary);
ary = (char*)calloc(500, sizeof(char));
}
}
if(found==0)
{
printf("not found\n");
}
fclose(my_file);
}
}
int compare(char str1[], char str2[])
{
int i = 0;
int risp;
if(str1>str2 || str1<str2)
{
risp=-1;
}
if(str1==str2)
{
while(str1[i++]!='\0')
{
if(str1[i]!=str2[i]) risp=1;
}
}
return risp;
}
它编译,但不能正常工作,我不知道为什么。有人可以指出我的错误或让我知道更好的解决方案吗?
编辑:当我打印与句子相关的两个 str 时,可以,但第一次打印后的另一个 str 继续打印,单词前面有一个中断。如下所示:
Str1:1,2
Str2:1,2,3,4
Str1:1,2
Str2:
car, house, hotel
Str1:1,2
Str2:
2,age,12
Str1:1,2
Str2:
1,2
Str1:1,2
Str2:
1,2,3,5
Str1:1,2
Str2:
house, car
这可能是我的问题之一吗?我试图解决它...