Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Function chỉ nhận giá trị đầu tiên của mảng được truyền vào

    Đây là function thực thi của mình:
    Mã:
    void Player::handleRequest(unsigned char* buf, int len){
    	try{
    		short header;
    		header = buf[2] + buf[3]*0x100;
    		printf("HANDLER [%x] Player: %s (%d,%d)
    ",header,this->getName(),this->getRegionId(),this->getMapId());
    		handler->handle(PacketReader(buf, len, id));
    	}
    #ifdef DEBUG
    	catch(PacketHandlingError ph){
    		cout << ph.getError();
    	}
    	catch (BadQuery er ) {
    		printf("%s
    ", er.what());
    	}
    #endif
    	catch(...){
    		//TODO
    	}
    }
    Còn đây là đoạn code gọi function trên:
    Mã:
    bytesInBuffer += l;
    		if (bytesInBuffer == packetSize){
    			player->handleRequest(buffer, packetSize);
    			bytesInBuffer = 0;
    		}
    khai báo biến buffer:

    Mã:
    private:
    	unsigned char buffer[BUFFER_LEN];
    Ở đoạn gọi function handleRequest, biến buffer khi chạy là 1 mảng có 29 giá trị nhưng khi mình debug vào function handleRequest thì biến buf chỉ nhận giá trị đầu tiên trong mảng buffer khi truyền vào
    Các bác chỉ dùm mình xem mình sai ở đoạn nào với

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái này bình thường mà. Không phải code sai đâu.
    Bạn nhìn ở cửa sổ debug thì biến buf của bạn chỉ là con trỏ nên nó chỉ hiện phần tử đầu tiên thôi.
    Bạn có thể xem các biến khác bằng cách gõ buf[1], buf[2], ...

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •