#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, f=0;
int c;
char file_name[100];
char search[10];
printf("Enter the file name:");
scanf("%s", file_name);
printf("Search word:");
scanf("%s", search);
FILE *f = fopen((strcat(file_name, ".txt")), "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);
char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);
/*search*/
if (strstr(bytes, search) != NULL){
printf("found\n");
f = 1;}
else{
printf("Not found\n");
f=0;}
if (f==1){ /* if found...print the whole line */
....}
free(bytes);
}
以上是我從.txt文件中搜索字符串的程序。找到後,打印「找到」,否則打印「未找到」。現在我想打印字符串是其中一部分的完整行。我正在考慮使用'f == 1'作爲'if if'打印整行的條件,但不確定最佳的處理方式。如何打印當前行?
如果你關心線條,你的代碼應該包括一些提到的線段結尾,非? –
從找到匹配的位置向後搜索,直到找到一行結尾(或文件的開頭)。現在向前搜索,直到下一行結束(或文件末尾)。什麼是你的現行路線。 – tux3
如何向後搜索? – jimo