출력값 알아내는게 문제인데요
출력값 첫번째는 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; }
실행 결과 |
'ECIM list (Help!)' 카테고리의 다른 글
C언어 포인터 - 문자열을 다룰 때 이중 포인터를 쓰는 이유 (0) | 2015.09.05 |
---|---|
Const (한정자) 관련 질문입니다. (0) | 2015.09.03 |
두 정수의 최대공약수 구하기 - 디버깅 (0) | 2015.09.03 |
C언어 재귀함수로 삼각형 그리기 - 재귀함수 연습 (0) | 2015.08.30 |
피보나치 수열 비재귀방법으로 풀기 - Fibonacci number without recursion (0) | 2015.08.30 |