Tôi có bộ đệm mảng char mà tôi đang sử dụng để lưu trữ các ký tự mà người dùng sẽ nhập từng cái một. Mã của tôi bên dưới công trình nhưng có một vài trục trặc mà tôi không thể hình dung ra:mảng chuỗi với ký tự rác ở cuối
- khi tôi thực hiện một printf để xem những gì trong bộ đệm, nó lấp đầy nhưng tôi nhận được các ký tự rác ở cuối
- nó sẽ không dừng lại ở 8 ký tự mặc dù được khai báo là char Buffer [8];
Ai đó có thể giải thích cho tôi điều gì đang xảy ra và có lẽ cách tôi có thể khắc phục vấn đề này? Cảm ơn.
char Buffer[8]; //holds the byte stream
int i=0;
if (/* user input event has occurred */)
{
Buffer[i] = charInput;
i++;
// Display a response to input
printf("Buffer is %s!\n", Buffer);
}
Output:
tagBuffer is 1┬┬w! tagBuffer is 12┬w! tagBuffer is 123w! tagBuffer is 1234! tagBuffer is 12345! tagBuffer is 123456=! tagBuffer is 1234567! tagBuffer is 12345678!
tagBuffer là 123456789!
Tuyệt vời. Cảm ơn. Chỉ một câu hỏi là: điểm đệm [8] là gì? – Steve
buffer [8] báo cho trình biên dịch đặt 8 byte bộ nhớ cho mảng của bạn. Chuỗi của bạn có thể ngắn hơn (bằng cách làm "bộ đệm [4] = 0;" ví dụ) nhưng không thể (hoặc không nên) dài hơn. –
Bộ đệm [8] là bộ đệm cho 7 ký tự và một terminator ;-). –