1.linux打开文件显示^M
原因:Windows 和 Linux 系统对文本文件的换行符有不同的约定:
Windows 使用 回车(CR,十六进制是0xD) + 换行(LF,十六进制是0xA)组合(\r\n);
Linux 只使用 换行(LF,十六进制是0xA)(\n);。
^M 是 0xD 在 Vim 中的显示,0x0D = 13,M是英语中的第 13 个字符。
2.sh命令处理
方法一:vim打开替换
命令:%s/\r//g
方法二:vim打开修改格式
命令:set fileformat=unix
3.c代码程序中处理
#include <stdio.h>
#include <string.h>
void remove_crlf(char *str) {
char *last_char = str + strlen(str) - 1;
if (*last_char == '\n') {
*last_char = '\0'; // 删除\n
last_char--;
if (*last_char == '\r') {
*last_char = '\n'; // 如果存在,也删除\r
}
else{
last_char++;
*last_char = '\n';
}
}
}
int main() {
char str[] = "Hello, World!\r\n";
remove_crlf(str);
printf("After replacement: %s", str);
return 0;
}