我想通过只读取每行的第一个单词来搜索文件中的单词,并复制第一个单词与另一个文件相似的整行。此代码正在读取整个文件而不是每行的第一个单词。
#include<stdio.h>
#include<string.h>
int main()
{
int check=1;
FILE *fp,*fp1;
char ser[200],oneword[200],c;
printf("Enter the word:");
scanf("%s",ser);
fp=fopen("4HHB.pdb","r");
fp1=fopen("file2.dat","a+");
do
{
if(check!=0)
{
c=fscanf(fp,"%s",oneword);
//printf("hi %s\n",oneword);
check = strcmp(oneword,ser);
}
if(check==0)
{
//printf("Hello");
check=1;
fprintf(fp1,"%s ",oneword);
c=fgetc(fp);
while(c!=10&&c!=EOF) // The ASCII code for \n is 10
{
fputc(c,fp1);
c=fgetc(fp);
// if(c=="\n")
// break;
}
fputc(c,fp1);
}
}while(c!=EOF);
fclose(fp);
fclose(fp1);
return 0;
}
答案 0 :(得分:1)
当一个单词匹配时,该行需要读/写。
当一个单词(代码当前正在检查所有单词,而不仅仅是每行的第一个单词)不匹配时,需要读取/丢弃该行的其余部分。
强烈建议通过fgets()读取每一行,然后解析第一个单词以决定是否要写入或丢弃该行。