Chủ Nhật, 7 tháng 11, 2010

_getcwd, _wgetcwd - Một công cụ thật hữu dụng.

Các bạn biết đấy, thế giới lập trình thật rộng lớn, dù bạn có mở ra bao nhiêu cánh cửa, sẽ có từng ấy +1 số cánh cửa mà bạn thấy là mình cần phải mở ra tiếp. Và nếu như không thể mở tiếp những cánh cửa đó, bạn có thể vấp ngã vì thiếu ánh sáng đấy. Tôi cũng đã được một phen u đầu vì vấp ngã trong khi không biết mò mẫm ở đâu để mở cánh cửa tiếp theo cho mình. Trong lúc đang loay hoay về việc đó, may mắn thay 1 bro ở diễn đàn Gamedev.vn đã gỡ rối giùm tôi, và mách nước cho tôi về _getcwd và _wgetcwd. Nó thật sự thú vị và khá dễ tìm hiểu(chỉ khi biết rồi ^^ tôi mới nói được thế) nên tôi quyết định viết 1 bài viết về nó. Thật ra là tôi dịch nó từ thư viện MSDN của Microsoft, link gốc các bạn có thể xem ở liên kết đính kèm ^_^

_getcwd, _wgetcwd

  • Description:
    Lấy đường dẫn đầy đủ mà (code) hiện tại đang làm việc (giải thích nó quả thực là 1 việc khó, nên hãy dành sự giải thích rõ ràng hơn cho phần ví dụ)
char *_getcwd( 
   char *buffer,
   int maxlen 
);
wchar_t *_wgetcwd( 
   wchar_t *buffer,
   int maxlen 
);

  • Parameters(tham số đầu vào):

buffer
Con trỏ mảng chuỗi chứa đường dẫn mà hàm trả về
maxlen
Độ dài (số kí tự) tối đa của đường dẫn trả về: char cho _getcwdwchar_t cho _wgetcwd.
  • Return Value( Giá trị trả về):

Con trỏ trỏ tới buffer. Hàm trả về NULL xác định 1 error, và errno cũng được set về ENOMEM, nó xác định rằng đang xảy ra một sự cố thiếu hụt bộ nhớ để cấp phát maxlen byte(khi mà đối số buffer đưa vào là NULL), hoặc đổi thành ERANGE, xác định rằng đường dẫn trả về dài quá độ dài maxlen cho phép. Nếu như maxlen lớn hơn hoặc bằng 0, hàm dẫn ra một invalid parameter handler, như được mô tả tại Parameter Validation

Các bạn có thể tìm hiểu thêm về errno và những thứ tương tự tại _doserrno, errno, _sys_errlist, and _sys_nerr.

Không có nhận xét nào:

Đăng nhận xét