944,100 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 2797
  • C++ RSS
Nov 9th, 2007
0

The difference of '\n' in windows and linux.

Expand Post »
Hello there. Is there anyway that you can convert the '\n' in windows which is 2bytes to the '\n' 1byte so that the linux could read it?
Similar Threads
Reputation Points: 32
Solved Threads: 4
Practically a Master Poster
jaepi is offline Offline
647 posts
since Jul 2006
Nov 9th, 2007
0

Re: The difference of '\n' in windows and linux.

In addition, does the fread() function can use wchar_t* type as buffer?
Reputation Points: 32
Solved Threads: 4
Practically a Master Poster
jaepi is offline Offline
647 posts
since Jul 2006
Nov 9th, 2007
0

Re: The difference of '\n' in windows and linux.

Quote ...
Is there anyway that you can convert the '\n' in windows which is 2bytes to the '\n' 1byte so that the linux could read it?
Sure. There is a little Unix utility called dos2unix. It is found on most *nix systems.

To do it in code, just set your output file mode to "binary". Doing so turns off the '\n' to "\r\n" translations, so when you write your file you get exactly what you write --single newline and all.

Quote ...
In addition, does the fread() function can use wchar_t* type as buffer?
No, it uses char. Sorry.

However, there are usually functions to convert a binary string to a unicode string...
(I don't know what they are though.)

Hope this helps.
Featured Poster
Reputation Points: 1140
Solved Threads: 229
Postaholic
Duoas is offline Offline
2,039 posts
since Oct 2007
Nov 9th, 2007
0

Re: The difference of '\n' in windows and linux.

converting ascii text files is trivial; you have a variety of tools. eg. tr, perl, awk, vi etc.in fact anything that can replace a cr-lf sequence with just a cr. eg.
awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt
you could also use a utility called tofrodos which is available on a number of systems (under different names like "todos", "fromdos", "dos2unix", "unix2dos" etc.)
http://kb.iu.edu/data/acux.html
http://www.thefreecountry.com/tofrodos/

if the files are in unicode, these simple techniques will not work. unicode has a variety of newlines: CR (000D), LF (000A), CRLF (000D,000A), NEL (0085), FF (000C), LS (2028), and PS (2029). for a perl hack see http://www.onlamp.com/pub/a/onlamp/2...es.html?page=3. it is easy in c++ to write a function that processes input character by character and does the necessary translations.

fread and fwrite are to i/o what memcpy is to memory. it reads or writes bytes into untyped memory (void*) without any formatting or interpretation. the stream should be opened in binary ("b") mode to prevent newline character translations by the underlying layers. for example,
C++ Syntax (Toggle Plain Text)
  1. int array[100] ;
  2. // to write an array (binary) into afile
  3. fwrite( array, sizeof(int), 100, file );
  4. // to read the array (binary) from a file
  5. fread( array, sizeof(int), 100, file );
  6.  
  7. struct some_struct mystruct ;
  8. // write
  9. fwrite( &mystruct, sizeof(struct some_struct), 1, file ) ;
  10. // read
  11. fread( &mystruct, sizeof(struct some_struct), 1, file ) ;
using these functions correctly is difficult; mainly because they do not distinguish between end of file and error. use of feof and ferror is required to determine what has occurred.
Reputation Points: 1159
Solved Threads: 285
Posting Virtuoso
vijayan121 is offline Offline
1,606 posts
since Dec 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: min value
Next Thread in C++ Forum Timeline: Help!





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC