cuốn sách gpt4 ai đã làm

Lệnh gọi System() để thực thi hàng loạt tệp truyền phát khiến chương trình được đặt lại trên Windows

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 13:14:30 31 4
mua khóa gpt4 Nike

Khi tôi "xây dựng và chạy" chương trình trong Code::Blocks, nó chạy hoàn toàn bình thường! Nhưng khi tôi chạy thủ công từ thư mục "/bin", khi nó cố gọi "temp.bat" bằng system() , thì nó sẽ thiết lập lại. tại sao vậy? Nó không có phụ thuộc tập tin cụ thể, nó tự tạo chúng. Đây là một số mã:

         ofstream filetmp1 ("temp1.bat", ios::out | ios::binary);
filetmp1 << "@echo off" << '\n';
filetmp1 << "echo user xyz> script.dat" << '\n';
filetmp1 << "echo xyz>> script.dat" << '\n';
filetmp1 << "echo get conntest.test>> script.dat" << '\n';
filetmp1 << "echo bye>> script.dat" << '\n';
filetmp1 << "ftp -n -s:script.dat xyz.com" << '\n';
filetmp1 << "del script.dat" << '\n';
filetmp1.close();
system ("temp1.bat"); // NẾU TÔI XÓA DÒNG NÀY, CHƯƠNG TRÌNH HOẠT ĐỘNG NHƯ THẾ NÀO, cho đến hệ thống thứ hai ("temp1.bat")
hệ thống ("del temp1.bat");
hệ thống ("cls");

cout << "Đã tải tất cả dữ liệu!";
hệ thống ("cls");

ofstream filetmp ("temp1.bat", ios::out | ios::binary);
filetmp << "@echo off" << '\n';
filetmp << "echo user xyz> script.dat" << '\n';
filetmp << "echo xyz>> script.dat" << '\n';
filetmp << "echo cd app>> script.dat" << '\n';
filetmp << "dữ liệu LCD echo>> script.dat" << '\n';
filetmp << "echo nhắc n>> script.dat" << '\n';
filetmp << "echo mput *.txt>> script.dat" << '\n';
filetmp << "echo bye>> script.dat" << '\n';
filetmp << "ftp -n -s:script.dat xyz.com" << '\n';
filetmp << "del script.dat" << '\n';
filetmp.close();
system ("temp1.bat"); // VỚI CẢ HAI DÒNG BỊ XÓA, NÓ HOẠT ĐỘNG Nhưng tôi không muốn xóa chúng, vì tôi không biết cách thay thế cho chúng.
hệ thống ("del temp1.bat");
hệ thống ("cls");

Tôi nghĩ tôi đã kể tất cả chi tiết rồi. Cảm ơn trước.

câu trả lời hay nhất

"Bạn phải xóa rõ ràng—bằng cách sử dụng fflush hoặc _flushall—hoặc đóng bất kỳ luồng nào trước khi gọi hệ thống." - Tài liệu MS

Cố gắng làm mới tất cả những gì cần thiết trong hệ thống Luồng vẫn mở trong suốt cuộc gọi. _flushall() Nên đơn giản nhất.

Về c++ - Có thể thực thi hàng loạt bằng lệnh gọi hệ thống() tới tệp truyền phát khiến chương trình được đặt lại trên Windows, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/38017956/

31 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress