사용자가 하나씩 입력 할 문자를 저장하는 데 사용하는 문자 배열 버퍼가 있습니다. 작품 아래에 내 코드하지만 내가 알아낼 수있는 몇 가지 결함이있다 : 나는 버퍼에 무엇을 볼 수있는의 printf를 실행할 때끝에 가비지 문자가있는 문자열 배열
- , 그것은 채워 않습니다를하지만 난 마지막에 가비지 문자를 얻을 수
- 을 char 버퍼 [8]로 선언되었지만 8 문자로 멈추지 않습니다.
누군가 제발 내가 무슨 일이 일어나고 있는지 그리고 어떻게 해결할 수 있을지 설명해 주실 수 있습니까? 감사.
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);
}
출력 :
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는 123456789입니다!
굉장합니다. 감사. 단 하나의 질문 : 버퍼 [8]의 요점은 무엇입니까? – Steve
buffer [8]는 컴파일러에게 배열에 8 바이트의 메모리를 할당하도록 지시합니다. 문자열은 이보다 짧을 수 있지만 (예 : "buffer [4] = 0;"을 수행하여) 더 길 수는 없습니다. –
버퍼 [8]은 7 개의 문자와 하나의 터미네이터를위한 버퍼입니다 ;-). –