RE: how to know a binary or text file and show all the information in file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi:
I do some experiment like below:
   fgets(cTemString, 3, fIn);
   printf("before sscanf ftell=0x%lx\n",ftell(fIn));
   sscanf(cTemString,"%x",&uValue);
   printf("cTemString = %s\n",cTemString);
   printf("uValue in decimal is %d and in hex is 0x%x\n",uValue,uValue);
   printf("after sscanf ftell=0x%lx\n",ftell(fIn));

And output is 
   before sscanf ftell=0x2
   cTemString = 10
   uValue in decimal is 16 and in hex is 0x10
   Segmentation fault              

The file position seems get mess after I use sscanf.
It is unreasonable!! How could sscanf change the file position?
Sscanf only touches 2 things, uValue and cTemString, and they have no relationship with file token, right?

Sincerely Yours,
cckuo 

-----Original Message-----
From: Manish Katiyar [mailto:mkatiyar@xxxxxxxxx] 
Sent: Wednesday, December 19, 2007 9:48 PM
To: C C Kuo(郭哲君)
Subject: Re: how to know a binary or text file and show all the information in file

Hmm... interesting. The only reason i can think of is probably since
you have the string of 3 characters (bytes) and you dont know what the
4th byte is .... while with %x i guess it is trying to fill 4 bytes in
the integer. But again just a guess.... you can try to make sure that
the input string to sscanf is of 4 bytes with all the extra space
initialised as null and only the first two characters contain the
data.

Hope that helps.......

On Dec 19, 2007 5:51 PM,  <C_C_Kuo@xxxxxxxxxxxxxx> wrote:
> Hi:
> Your suggestion really works, but I get "segment fault" while reading the file.
> Below is the output message:
> uValue in decimal is 16 and in hex is 0x10
> Segmentation fault
>
> After I mark the sscanf as below, the segmentation fault disappears.
> while(!feof(fIn))
> {
>    fgets(cTemString, 3, fIn);
> //   sscanf(cTemString,"%x",&uValue);
>    printf("uValue in decimal is %d and in hex is 0x%x\n",uValue,uValue);
> //   uValue = atoi(cTemString);
>    fwrite(&uValue, sizeof(unsigned char),1,fout);
> }
> It is quite wired, since sscanf only parse the value to uValue and doesn't change the file token at all.
>
> Appreciate your help,
> cckuo
>
> -----Original Message-----
> From: Manish Katiyar [mailto:mkatiyar@xxxxxxxxx]
> Sent: Wednesday, December 19, 2007 6:43 PM
> To: C C Kuo(郭哲君)
>
> Subject: Re: how to know a binary or text file and show all the information in file
>
> Hi,
>
> Did you try something like this ?
>
> while(!feof(fIn))
> {
>    fgets(cTemString, 3, fIn);
>    sscanf(cTemString,"%x",&uValue);
>    printf("uValue in decimal is %d and in hex is 0x%x\n",uValue,uValue);
> //   uValue = atoi(cTemString);
>    fwrite(&uValue, sizeof(unsigned char),1,fout);
> }
>
> Hope that helps
>
> On Dec 19, 2007 3:30 PM,  <C_C_Kuo@xxxxxxxxxxxxxx> wrote:
> > Hi all:
> > My problem is:
> > I have a file which content is like below 100f1010 0f100f10 0e100e10 (The format is ASCII text, with CRLF line terminators, which I got by typing "file myfile" and thanks Manish and Grigoriy ).
> > Right now I want to transfer it to hex format each 2 chars and save it as binary file like below:
> > 0f      10    0f      10       original input
> > Ox0f    0x10  0x0f    0x10     final output
> > 0e      10    0e     10        original input
> > 0x0e    0x10  0x0e   0x10      final output
> >
> > And my function is like below
> > while(!feof(fIn))
> > {
> >     fgets(cTemString, 3, fIn);
> >     uValue = atoi(cTemString);
> >     fwrite(&uValue, sizeof(unsigned char),1,fout);
> > }
> >
> > But I have some problems right now,
> > 1. Does there have any atoh function, transfer char* to hex value.
> > 2. How can I avoid getting the control character, like /r /c,etc by using fgets?
> >   I know I can use fgetc and isspace to check whether the character is control character. But it is too slow, since read 1 char each time. Can any acceleration help me?
> >
> > Appreciate all your help,
> > cckuo
> > -----Original Message-----
> > From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto:kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of Grigoriy Shcherbyak
> > Sent: Wednesday, December 19, 2007 4:42 PM
> > To: kernelnewbies@xxxxxxxxxxxx
> > Subject: Re: how to know a binary or text file and show all the information in file
> >
> >
> > Hello!
> >
> > "File" utility should give you the information on what this file is.
> > Just run
> > file myfile.dat.
> >
> > If you mean that you need to transform binary in printable form, then
> > look to base64 coding functionality from openssl package - it can do
> > this.
> >
> > Many tools can open binary files, it depends on what you want it to do.
> >
> > Regards,
> >
> > On Dec 19, 2007 10:18 AM,  <C_C_Kuo@xxxxxxxxxxxxxx> wrote:
> > > Dear all:
> > > Could someone tell me how to know the file is binary or ASCII?
> > > I know both of them are stream of bytes but interpreted by different ways.
> > > My questions are:
> > > 1. How can I know this without opening it?
> > > 2. how can I see all the information in a file, include all the control characters, like linein, print character and line feed, etc.
> > > 3. Is there any tool on Linux can open binary file?
> > > 4. Is there any tool on Linux can transfer ASCII to binary and binary to ASCII?
> > >
> > > Appreciate your help,
> > > cckuo
> > >
> > >
> > >
> > > *****************  Novatek Email Confidentiality Notice *****************
> > > The information contained in this electronic communication, and any electronic attachments, is confidential or legally privileged and may be subject to protection under the law. It is intended only for the named recipient above. If you have received this communication in error, or are not the named recipient, please immediately notify the sender via reply email and delete this communication from your computer system, and destroy all copies of this communication along with any attachments. Thank you for your cooperation.
> > >
> > > Copyright Novatek 2006-2007 All Rights Reserved
> > >
> > > --
> > > To unsubscribe from this list: send an email with
> > > "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
> > > Please read the FAQ at http://kernelnewbies.org/FAQ
> > >
> > >
> > N猛y鈉槃逶??zv 陽z
> >
> >
> >
> >
> > *****************  Novatek Email Confidentiality Notice *****************
> > The information contained in this electronic communication, and any electronic attachments, is confidential or legally privileged and may be subject to protection under the law. It is intended only for the named recipient above. If you have received this communication in error, or are not the named recipient, please immediately notify the sender via reply email and delete this communication from your computer system, and destroy all copies of this communication along with any attachments. Thank you for your cooperation.
> >
> > Copyright Novatek 2006-2007 All Rights Reserved
> >
>
>
>
> --
> Thanks & Regards,
> ********************************************
> Manish Katiyar  ( http://mkatiyar.googlepages.com )
> 3rd Floor, Fair Winds Block
> EGL Software Park
> Off Intermediate Ring Road
> Bangalore 560071, India
> ***********************************************
>
>
>
> *****************  Novatek Email Confidentiality Notice *****************
> The information contained in this electronic communication, and any electronic attachments, is confidential or legally privileged and may be subject to protection under the law. It is intended only for the named recipient above. If you have received this communication in error, or are not the named recipient, please immediately notify the sender via reply email and delete this communication from your computer system, and destroy all copies of this communication along with any attachments. Thank you for your cooperation.
>
> Copyright Novatek 2006-2007 All Rights Reserved
>



-- 
Thanks & Regards,
********************************************
Manish Katiyar  ( http://mkatiyar.googlepages.com )
3rd Floor, Fair Winds Block
EGL Software Park
Off Intermediate Ring Road
Bangalore 560071, India
***********************************************



*****************  Novatek Email Confidentiality Notice *****************
The information contained in this electronic communication, and any electronic attachments, is confidential or legally privileged and may be subject to protection under the law. It is intended only for the named recipient above. If you have received this communication in error, or are not the named recipient, please immediately notify the sender via reply email and delete this communication from your computer system, and destroy all copies of this communication along with any attachments. Thank you for your cooperation.

Copyright Novatek 2006-2007 All Rights Reserved

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux