ฉันเขียนโค้ดที่ต้องแสดงพารามิเตอร์หลัก แต่เมื่อฉันรวบรวมมันและพิมพ์ในโปรแกรม "*" จะแสดงโครงสร้างไฟล์ของฉัน คำสั่งใน cmd มีลักษณะเช่นนี้: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;
}
ผลลัพธ์คือ:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
และคำถามของฉัน: เป็นไปได้ไหมที่จะให้โปรแกรมพิมพ์ "*" แทนที่จะแสดงรายชื่อไฟล์ ขอบคุณในคำแนะนำ
ปัญหาคือเปลือกของคุณ
—
pmg
*
แปลงเป็น ไม่มีอะไรผิดปกติกับโปรแกรม C ของคุณ (รวมถึงไม่จำเป็นต้องใช้) เพื่อป้องกันไม่ให้เชลล์แปลงเครื่องหมายดาวใช้:"file1 file2 ..."
<stdlib.h>
program.exe 1 2 3 "*"
ขอบคุณสำหรับความช่วยเหลือ
—
stasio14
ไม่เกี่ยวข้องกับคำถาม แต่พูดอย่างเคร่งครัด
—
Lundin
char const* argv[]
ไม่ถูกต้อง คุณไม่สามารถประดิษฐ์รูปแบบของ main () ได้ด้วยตัวเองเฉพาะผู้รวบรวมเท่านั้นที่สามารถทำได้ argv
จริง ๆ แล้วเป็นหน่วยความจำแบบอ่าน / เขียนแม้ว่าการเขียนไปยังมักจะไม่ใช่ความคิดที่ดีที่สุด
เชลล์ cmd ของ Windows ไม่ได้ทำการขยายสัญลักษณ์แทน ไม่ว่ามันจะไม่ถูกเรียกใช้จาก cmd shell หรือคอมไพเลอร์กำลังแทรกลอจิกเพื่อเลียนแบบการขยายตัวของเชลล์
—
ikegami
*
ตีความของเชลล์ไม่ใช่โปรแกรมเอง ใช้\*
หรือ"*"
เพื่อส่ง * ไปยังโปรแกรม