[QUOTE=lytieulong_269;32560]Các bạn xem hộ mình, DEV báo lỗi “expected primary-expression before ‘{’ token”
[/QUOTE]
//Demo on Visual Studio 2010
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main( int argc, const char* argv[] )
{
int x;
int y;
if ( argc == 3 )
{
x = atoi( argv[1] );
y = atoi( argv[2] );
printf( "%d + %d = %d
", x, y, x + y );
}
}
Mảng argv luôn được tự động khởi tạo mỗi khi chạy chương trình nên bạn ko thể khởi tạo nó 1 lần nữa trong hàm main. VD bạn file test.exe với nội dung code :
int main(int argc, char *argv[])
{
return 0;
}
Nếu chạy không có đối số : test.exe
thì argv[0] = test.exe
Nếu chạy có đối số : test.exe 1 2 3
thì argv[0] = test.exe, argv[1] = 1, argv[2] = 2, argv[3] = 3
[QUOTE=lytieulong_269;32603]à! Đối số thứ nhất là tên .exe của chương trình! Vậy nếu mình muốn thêm 2 đối số nữa thì làm cách nào vậy bạn?[/QUOTE]
Biến argv được khởi gán giá trị trước khi bất cứ lệnh nào trong hàm main chạy. Tham số truyền vào chính là toàn bộ câu lệnh đã sử dụng khi gọi chương trình từ giao diện dòng lệnh (command line). Việc sử dụng code để thay đổi giá trị của argv không có mấy ý nghĩa.
Dĩ nhiên em có thể làm được, bằng cách khai báo một biến mới rồi gán argv bằng biến đó, nhưng làm vậy để làm gì?
Em không nói mục đích của mình làm sao mọi người giúp em được?
[QUOTE=lytieulong_269;32603]à! Đối số thứ nhất là tên .exe của chương trình! Vậy nếu mình muốn thêm 2 đối số nữa thì làm cách nào vậy bạn?[/QUOTE]
Suy nghĩ khác đi 1 chút đi, tại sao cứ phải gò bó ?
Nếu ta không thể thay đổi 1 cái gì đó, vậy thì ta hãy copy nó đi, rồi ta thay đổi trên bản sao của nó
Ví dụ:
argv không thay đổi đc
=>
char* temp;
for (i = 0;i < argc;++i) temp* = argv*;…
[QUOTE=lytieulong_269;32609]Nhưng đối số vẫn chưa có thì làm sao mà gán được bạn? Mình muốn “gán” trước sau đó thực hiện phép tính atoi(argv[1]) + atoi(argv[2]) …[/QUOTE]
Bạn phải sử dụng giao diện dòng lệnh (command line) - trên window nó là chương trình cmd.exe đấy. Đối số chính là dòng lệnh mà bạn đã gõ để gọi thực thi chương trình. Bạn xem lại thật kỹ post #8, đã có người diễn giải rồi đấy.