C语言实现对一文件中的一段特定内容进行查询,并输出所在位置

要求如题所示。就是要实现可以查询任何一小段内容(不需要所找内容输入界面,把要求的内容写在代码里某个位置就行),所输出的位置即:从文件开头经过了多少字节。希望所使用的代码能... 要求如题所示。就是要实现可以查询任何一小段内容(不需要所找内容输入界面,把要求的内容写在代码里某个位置就行),所输出的位置即:从文件开头经过了多少字节。希望所使用的代码能牵扯到文件指针。。。(这种东西: FILE *pfile_forread=fopen(FILE_NAME,"r");)
条件上有啥不明白的请问我
文件是任何二进制文件
展开
 我来答
匿名用户
2014-05-05
展开全部

#include <cstdlib>

#include <cstdio>

#include <cstring>


int find(FILE* p_file, char* pStr)

{

int iPos = ftell(p_file);

char chBuff = 'a';

int iReadNum = 0;

for(pStr++; 

iReadNum = fread(&chBuff, 1, 1, p_file), iReadNum && *pStr;

++pStr)

{

if (*pStr != chBuff)

{

fseek(p_file, iPos, SEEK_SET);

return 0;

}

}

if(!(*pStr))

{

return iPos;

}

if(iReadNum == 0)

{

fseek(p_file, iPos, SEEK_SET);

return 0;

}

}


void fun(char* pString)

{

FILE* p_file = fopen("test.txt", "a+b");

// 文件内容为121212123454574569

if(!p_file)

{

printf("打开文件失败\n");

return ;

}

char buf = 'a';

char char_arr[10];

strcpy(char_arr, pString);

int iPos = 0;

while( fread(&buf, 1, 1, p_file))

{

if(buf == char_arr[0])

{


if( iPos = find(p_file, char_arr))

{

printf("找到%s\t的位置为: %d\n", pString, iPos);

fclose(p_file);

return ;

}

}

}

printf("没有找到%s\n", pString);

fclose(p_file);

}


int main()

{

fun("123");

fun("bcd");

fun("23");

fun("456");

return 0;

}

对于查找字符串的长度假设不会超过10.。这里不考虑越界问题。只看实现方法

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式