Saya menulis kode yang harus menampilkan parameter utama, tetapi ketika saya mengkompilasinya dan mengetikkan "*" program menunjukkan struktur file saya. Perintah dalam cmd terlihat seperti ini: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;
}
Hasilnya adalah:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
Dan pertanyaan saya: Apakah mungkin memaksa program untuk mencetak "*" alih-alih daftar file. Terima kasih atas sarannya
*
dikonversi "file1 file2 ..."
oleh shell Anda. Tidak ada yang salah dengan program C Anda (meskipun termasuk <stdlib.h>
tidak perlu). Untuk mencegah shell mengonversi tanda bintang gunakan tanda kutip:program.exe 1 2 3 "*"
char const* argv[]
tidak benar. Anda tidak dapat menemukan bentuk main () sendiri, hanya kompiler yang dapat melakukannya. argv
sebenarnya membaca / menulis memori, meskipun menulis itu sering bukan ide terbaik.
*
ditafsirkan oleh shell, bukan program itu sendiri. Gunakan\*
atau"*"
untuk meneruskan * ke program.