출력값 알아내는게 문제인데요

출력값 첫번째는 30이고 두번째는 a부터 i까지 출력돼야 되는거 아닌가요?

두번째는 쓰레기값도 아니고 뭔 이상한 한자같은게 나오는데 원래 이렇게 나오는게 맞나요?



 

 Debug : For 문에 불필요한 세미 콜론이 있어서 오류입니다.   

 

○ 질문하신 코드의 For Loop에 잘못된 세미 콜론이 있습니다. 이 때문에 For 문이 진행이 안되었습니다. 



 

 코드 개선  

 

○ 물론, 예제 코드라서 그랬겠지만, 코드에 잘못된 부분이 많습니다. 

○ Malloc() 을 쓸 때는 Sizeof() 와 함께 써야 시스템이 바뀌어도 오류없이 동작합니다. 원래 코드는 위험합니다. 

○ Malloc() 후에는 메모리를 리셋해 주는 것이 좋습니다. (이 부분은 생략)

○ 문자열을 다룰 때는 마지막에 Null 문자를 넣어 주어야, 출력할 때 쓰레기 값이 보이지 않게 됩니다. 



   예제 코드
 

#include 
#include 

int main()
{
	int i = 0;
	int* pTmp = (int*)malloc(sizeof(int) * 10);
	char* pCh = (char*)malloc(20);

	pTmp[0] = 10;
	pTmp[1] = 20;

	printf("Sum : %d\n", pTmp[0] + pTmp[1]);

	for (i; i < 10; i++)
	{
		pCh[i] = 0x61 + i;
	}

	pCh[i] = '\0'; //Null char at the End of string

	printf("%s \n", pCh);

	free(pTmp);
	free(pCh);

	return 0;
}

 

 실행 결과  

 








Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
일상, 프로그래밍, IT 그리고 직장생활, Dive, 여행 by 지그프리드

카테고리

Class List (402)
Studies (30)
Exercise & Quizz (10)
Term Project (0)
ECIM list (Help!) (10)
Issues & News (0)
Gossip about IT & Job (22)
Tools (2)
Think about the Justice (23)
Book Review (170)
조엘 온 소프트웨어(번역) (28)
Diary (87)
Vacations (9)
Clash of clans 클래시 오브.. (11)

글 보관함

달력

«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Total : 315,601
Today : 3 Yesterday : 22