fgets函数:
char *fgets(char *s, int n, FILE *stream);
UBUNTU下: fgets(s, sizeof(s), stdin) 读入的字符要比 看上去的长度多1.
原因是因为它把回车符号\n也读进去了!!!!!
WINDOWS下也是这样。
what fucking fgets for my whole day!!!!! MARK.
//-----------------------------------------------------------------------------以下转载: http://blog.sina.com.cn/s/blog_4462f8560100tqau.html
windows换行是\r\n,十六进制数值是:0D0A。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。
linux下删除windows换行符^M
OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符
unix 下换行符只有: \r
Dos 下换行符有:\r\n
具体的, \r的ascii 码是:14
\n的ascii 码是:10
Dos 下换行符有:\r\n
具体的, \r的ascii 码是:14
\n的ascii 码是:10