Tôi thấy rằng chuyển hướng dòng lệnh của Windows tự động thay thế '\n' bằng '\r\n'. Có cách nào để tránh điều này? Bởi vì sau khi chuyển hướng stdout hoặc stderr, nếu bạn viết '\r\n' vào bảng điều khiển, bạn sẽ nhận được '\r\r\n' thay vì '\r\n'.
Cảm ơn bạn rất nhiều!
Bạn có thể thử một chương trình đơn giản:
fprintf(stdout,"Xin chào thế giới!\r\n");
Sau đó, bạn chạy nó với chuyển hướng:
demo 1>demo.log
Bằng cách sử dụng bất kỳ trình soạn thảo hex nào, bạn sẽ thấy rằng '\r\n' được biểu thị bằng '\r\r\n'.
gia hạn:
@ steve-jessop Tôi đã thực hiện việc này bằng cách sử dụng chế độ cài đặt
Đã giải quyết vấn đề, điều này sẽ buộc thiết bị xuất chuẩn
sử dụng O_BINARY
người mẫu. Vì vậy, luồng sẽ không \N
dịch sang \r\n
.
Cảm ơn bạn rất nhiều!
Cách tránh là không viết"Xin chào thế giới!\r\n"
. fprintf(stdout,"Xin chào thế giới!\n");
hoặc std::cout << "Xin chào thế giới!" << std::endl;
Thế là đủ rồi.
Đây không phải là chuyển hướng dòng lệnh hoặc thiết bị xuất chuẩn
Duy nhất cho bất kỳ bộ mô tả tệp nào được mở ở chế độ ký tự (ngược lại với chế độ nhị phân).
Tôi là một lập trình viên xuất sắc, rất giỏi!