Tôi đã viết một mã phải hiển thị các tham số chính, nhưng khi tôi biên dịch nó và gõ vào chương trình "*" sẽ hiển thị cấu trúc tệp của tôi. Lệnh trong cmd trông như thế này:program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
Kết quả là:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Và câu hỏi của tôi: Có thể buộc chương trình in "*" thay vì liệt kê các tệp. Cảm ơn lời khuyên
*
được chuyển đổi sang "file1 file2 ..."
vỏ của bạn. Không có gì sai với chương trình C của bạn (mặc dù bao gồm <stdlib.h>
là không cần thiết). Để ngăn vỏ chuyển đổi dấu sao, hãy sử dụng dấu ngoặc kép:program.exe 1 2 3 "*"
char const* argv[]
là không đúng. Bạn không thể tự phát minh ra các dạng main (), chỉ trình biên dịch mới có thể làm điều đó. argv
thực sự là đọc / ghi bộ nhớ, mặc dù viết cho nó thường không phải là ý tưởng tốt nhất.
*
được giải thích bởi shell, không phải chính chương trình. Sử dụng\*
hoặc"*"
để chuyển * cho chương trình.