[Powered by Google Translate] [Đối số dòng lệnh] [Christopher Bartholomew - Đại học Harvard] [Đây là CS50 - CS50.TV] Một tính năng hữu ích cho một chương trình là phải chấp nhận đầu vào người sử dụng. Như vậy đến nay, chúng tôi đã khám phá một số chức năng trong thư viện CS50 chấp nhận đầu vào của người dùng, chẳng hạn như "nhận được chuỗi" nhắc nhở người sử dụng, trong khi các ứng dụng đang chạy, cho một chuỗi. Tuy nhiên, có những trường hợp bạn muốn cung cấp đầu vào chương trình của bạn trước khi nó thực sự là chạy. Bằng cách này, bạn không cần phải hỏi thêm thông tin từ người dùng của bạn trong khi thực hiện một nhiệm vụ đơn giản. Lấy ví dụ, mv lệnh di chuyển trong UNIX. Lệnh này cho phép người sử dụng để di chuyển một tập tin từ một địa điểm khác. Theo các trang hướng dẫn sử dụng, mv chấp nhận hai đối số dòng lệnh: các tập tin đang được di chuyển và vị trí tập tin đang được chuyển đến. Vì vậy, ví dụ này có một lệnh với hai đối số. Vì vậy, làm thế nào để chúng ta nói với C chương trình của chúng tôi sử dụng các đối số dòng lệnh? Vâng, nó chỉ ra rằng chính, chúng tôi sử dụng trong tất cả các chương trình C, có một bí mật. Main chấp nhận hai tham số: argc và argv. Hãy đi qua những điều khoản này. Tham số đầu tiên, argc, đó là viết tắt cho số đối số, có một kiểu dữ liệu của các số nguyên. Tham số argc chứa số lượng các đối số, bao gồm cả lệnh. Trong lệnh di chuyển của chúng tôi, mặc dù chúng tôi chỉ có hai đối số hiển thị, giá trị của argc sẽ là 3. Tham số thứ hai, argv, mà là viết tắt của đối số vector, là một mảng của các con trỏ char trỏ đến chuỗi. Điều này có nghĩa rằng mỗi yếu tố trong argv, bắt đầu từ số không, chứa các lệnh và tranh luận. Ví dụ, argv [0], tôi sẽ tham khảo là argv không, sẽ luôn luôn chứa lệnh đang được chạy - trong trường hợp này, mv. argv [1] sẽ chứa tham số đầu tiên, file.txt, và argv [2] sẽ chứa tham số thứ hai, ~ / CS50 /. Đối số cuối cùng của argv sẽ luôn luôn là null. Vì vậy, chúng ta hãy thực hiện các đối số dòng lệnh. Trong bài tập trước, chúng tôi đặt có hiệu lực, có nghĩa là không có gì, như một tham số chính của. Tuy nhiên, để cho chúng ta sử dụng các đối số dòng lệnh, chúng ta cần phải loại bỏ void và địa điểm bên trong của chính int argc, char * argv []. Bây giờ, để truy cập toàn bộ phần tử từ argv, đó là lập luận của bạn, bạn chỉ có thể lặp đi lặp lại, hoặc vòng lặp, thông qua các mảng như thế này. Vì vậy, bên trong cơ thể chính, chúng tôi sẽ đi trước và gõ một vòng lặp for: for (int i = 0; i . Vì vậy, hãy biên dịch và chạy và cung cấp cho nó một đối số thực tế. Và, như chúng ta có thể thấy, hiện nay chúng tôi có vị trí chính xác của từng char cá nhân trong đối số. Vì vậy, đó là nó. Tôi là Christopher Bartholomew, đây là CS50. [CS50.TV]