Dear all: Below is the error program I write. char cTemString[3]; ...... unsigned char uValue; ..... fgets(cTemString, 3, fIn); printf("before sscanf ftell=0x%lx\n",ftell(fIn)); sscanf(buffer,"%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 below is the correct one char cTemString[3]; ...... Int uValue; //I only change the uValue type ..... fgets(cTemString, 3, fIn); printf("before sscanf ftell=0x%lx\n",ftell(fIn)); sscanf(buffer,"%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)); Questions: 1. Does any document or standard say scanf cannot use "unsigned char" as format? 2. If it is really so, why using the wrong format for scanf will effect the file token? Will this error destroy the whole file parameters? Someone help me, thanks. 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