C프로그래밍질문 : 미치겠음.
글쓴이: cs010101 / 작성시간: 수, 2008/06/18 - 8:10오후
소스는 아래와 같습니다.
이것을 출력하면,
12345678
1234
1234
이렇게 나옵니다. -.- node1_la는 unsigned int 이고요.
뭐가 문제인가요?
for(i = 0; i < 9; i++){
if(buf2_1[20+i] != '.'){
printf("%c", buf2_1[20+i]);
buf3_1[j][i] = buf2_1[20+i];
}
continue;
}
printf("\n");
printf("%s\n",buf3_1[j]);
node1_la = atol(buf3_1[j]);
printf("%d\n",node1_la);
Forums:
저 부분만 돌아갈 때는 정상적으로 돌아갑니다.
엄밀히 말하면 정상적이라고 할 수 없겠지만...
마침표가 숫자의 종료지점으로 설정하는 것이었다면 if조건문에서 문자가 .일 때 break;를 하던가 해야겠죠.
본문에 올리지 않은 소스의 다른 부분에서 문제가 있을 수 있습니다. j를 쓴 것을 보니 외부에서 루프를 또 도나 보죠?
제가 쓴 buf3_1처럼 두 번째 공간을 작게 할당한 상태에서 다음 루프에서 '5'가 있어야 할 자리를 null로 채우던가 할 지 모릅니다.
---------- 시그 *****
저도 세벌식을 씁니다.
M$윈도우즈, 리눅스, 맥 오에스 텐, 맥 오에스 클래식을 모두 엔드유저 수준으로 쓴답니다.
http://psg9.egloos.com
=================
잠못자는 한솔아빠
buf2_1[24] 의 값이 '.'
buf2_1[24] 의 값이 '.' 인가요 ?
그럼 buf3_1[4] 의 값은 정해지지 않게 됩니다. 님이 실행할 때에는 0x00 이 들어가 있었나보군요.
atol() 이 null teminate 를 만날때까지 동작할 테니 1234 까지만 처리할 테고요.
그나마 0x00 이라서 돌아가기는 했나본데, 다른 쓰레기 값이었다면 결과가 어찌됐을지 아무도 모릅니다.
null terminate 를 만날 때까지 돌아갈 테니 잘해야 터무니없는 값이고, 대부분은 segmentation fault.
OTL
댓글 달기