c二进制文件内容查找|怎么对C语言中的文件进行内容添加删除查找的操作

⑴ 使用hexmp 查看二进制文件

byte 1个字节 short 2个字节 char 2个字节 int 4个字节 long 8个字节 float 4个字节 double 8个字节 有时候需要查看一些二进制文件的内容,比如二进制文件中包含的某些字符串。这个时候可以用hexmp工具看查看。 如果是寻找文本内容,则经常在后面用管道跟上grep命令:hexmp -C file_name |grep hellokitty hexmp命令一般用来查看”二进制“文件的十六进制编码,但实际上它的用途不止如此,手册页上的说法是“ascii, decimal, hexadecimal, octal mp“,这也就是本文标题为什么要将”十六“给引起来的原因,而且它能查看任何文件,而不只限于二进制文件了。另外还有xxd和od也可以做类似的事情,但是我从未用过。在程序输出二进制格式的文件时,常用hexmp来检查输出是否正确。当然也可以使用Windows上的UltraEdit32之类的工具查看文件的十六进制编码,但linux上有现成的工具,何不拿来用呢。 常用参数 如果要看到较理想的结果,使用-C参数,显示结果分为三列(文件偏移量、字节的十六进制、ASCII字符)。 格式:hexmp -C binfile -C 输出规范的十六进制和ASCII码。来自: [ http://man.linuxde.net/hexmp] 一般文件都不是太小,最好用less来配合一下。 格式:hexmp -C binfile | less

⑵ C语言 访存二进制文件定位问题

1.打开模式要用r+(对于ASCII文件)或者rb+(对于二进制文件)2.fseek()函数有三个参数,第一个是文件指针,第二个是偏移量,第三个是起始位置,第三个参数有三个可选项,分别是SEEK_SET(文件开头),SEEK_CUR(当前位置),SEEK_END(文件结尾),feek()函数的作大耐用就是将文件指针指向滚漏春的文件读写位置搜宴设置为从起始位置起移动第二个参数表示的偏移量个字节的位置,第二个参数可以是负数,表示向前移动。 3.你所说的情况,应该用fgetpos()函数和fsetpos()函数设置读写位置。请自行上网查找这两个函数的使用说明。

⑶ C语言中,我将图书信息用二进制保存在文件中,现在我想要打开查找其中的某一个怎么实现

void deletebook()

{

FILE*fp;

念早 fp=fopen("tushu.txt","a+");

inti=0,n,flag=0;

charname[10];

printf("请输入需删除图书名称:");

scanf("%s",name);

for(i=0;i<=s;i++)

{

fseek(fp,i*sizeof(structBOOK),0);

if(strcmp(book[i].bookname,name)==0)

{

printf("********************************************************");

printf("* 图书列表 *");

printf("********************************************************");

printf("图书序号 图书名称 图书作者 是否借出");

printf("********************************************************");

printf("%d %s %s银嫌%s",book[i].booknum,&book[i].bookname,&book[i].bookcreat,&book[i].turefalse);

printf("********************************************************");

n=i;

仔搏雀 flag=1;

for(i=n;i<=s;i++)

{

book[i].booknum=book[i+1].booknum;

strcpy(book[i].bookname,book[i+1].bookname);

strcpy(book[i].bookcreat,book[i+1].bookcreat);

book[i].turefalse=book[i+1].turefalse;

fwrite(&book[i],sizeof(structBOOK),1,fp);

}

printf("该图书记录已删除!");

}

}

if(flag==0)

{

printf("没有该图书相关记录!");

}

fclose(fp);

}

这个是我之前写的,只是一个子函数哈!你在main里面调用就 可以了!是没有问题的

⑷ c语言用什么函数读取2进制文件内容

你怎么输出来的?二进制如果以文本输出自,自然会有很多乱码。你可以用"%x"格式输出看看chara;a=fgetc(fp1);printf("%c",a);/*这样肯定有乱码*/printf("%x",a);/*这样就是16进制*/

⑸ C语言二进制文件的读取问题

抄C语言中二进制文件的读取要用fread和fwrite来实现。fwrite()与fprintf()是不同的。fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。当打开文件时,记事本会自动把文件的磁盘内容作为ASCII码转换成对应的字符,然后再显示出来,即显示的是文本内容而不是磁盘内容。例如,用fwrite向文件写入“65”时,文件的磁盘内容就是保存的65(磁盘上以二进制表示)。当用记事本打开文件时,记事本会读到65,并把65看作一个ASCII码,再把对应的字符“A”显示出来。因此屏幕上看到的文本内容是“A”。而用fprintf向文件写入“65”时,文件的磁盘内容保存的是“6”和“5”这两个字符对应的ASCII码,分别是54和53。因此文件的磁盘内容是54和53。当用记事本打开文件时,记事本读到54,就显示出对应的“6”。再读到53,就显示出对应的“5”。

⑹ 怎么对C语言中的文件进行内容添加,删除,查找的操作

1、删除文件部分内容的大概步骤:新建一个临时文件,把原文件内容向临时文件里拷贝,遇到要删除的内容就跳过。结束后关闭文件,用remove("原文件名");把原文件删除,用rename("临时文件名","原文件名");把临时文件名改为原文件名。2、例如在原文件123.txt中删除以2和以4编号开头的行,可用以下代码实现:#include "stdio.h"#include "stdlib.h"int main(void){ FILE *fin,*ftp; char a[1000]; fin=fopen("123.txt","r");//读打开原文件123.txt ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt if(fin==NULL || ftp==NULL){ printf("Open the file failure…\n"); exit(0); } while(fgets(a,1000,fin))//从原文件读取一行 if(a[0]!='2' && a[0]!='4')//检验是要删除的行吗? fputs(a,ftp);//不是则将这一行写入临时文件tmp.txt fclose(fin); fclose(ftp); remove("123.txt");//删除原文件 rename("tmp.txt","123.txt");//将临时文件名改为原文件名 return 0;}

⑺ C语言:存储很多商品数据的二进制文件从键盘输入某种商品在文件中查找有无相应品名商品,求大神!!!!

初此兄看了一下,有两个问题。

应该是if (fp == NULL)而不是if (fp = NULL)。

读文件的4个fread语句格式要求严格,如果文件中不是20、12等这样的间隔侍扒尘存储,那就不能正确读取,建议用fscanf之类的灵活函老禅数。

另:F函数的形参s有何用?

⑻ C语言二进制文件用记事本打开可以看到内容吗

二进制文件中兄用记事本打开看可能出现乱码、或者看不见内容,可以磨桥使用UltraEdit或者EditPlus、瞎培猛HexEdit这些程序查看。

⑼ c语言 dat文件如何查看他里面的二进制数据啊

有保存的函数吗,如果文件是以二进制模式打开保存的 那么就fread掉第一个count之后循环fread一个结构体到p[i] 如果是文本的话用fscanf()格式化读取到p[i]嘛

⑽ C语言中二进制文件中如何查找字符串,有具体函数么

二进制文件中哪有字符串这个概念? 补充:可以用fseek移动指针位置,然后继续读取,原型如下int fseek(FILE *stream, long offset, int fromwhere);


赞 (0)