[완료][C언어]문자를 숫자로 바꾸고 싶습니다..잘안되내요..
글쓴이: waakan / 작성시간: 토, 2007/05/26 - 5:03오후
예를들어 a[0]='1' ,a[1]='2', a[2]='3'의 값을 가지는 배열이 있을때
for(count = 0;count<3;count++)
{
b[count] = atoi(&a[count]);
}
for(count = 0;count<3;count++)
{
printf("%d\n",b[count]);
}
이렇게 해보면 값이
123
23
3
이렇게 나오는데 제가 원하는 값은
1
2
3
이렇게 하나의 정수 배열에 하나의 문자가 들어 가게 하고 싶은데 안되내요..
뭐가 잘못된거죠 ㅠㅠ
<------추가 내용----->
제가 원하는것은 예를들어 숫자 123을 입력받았을때 입력 받는것은
char형 배열입니다. 그런데 그숫자를 각각 대응하는 int형 변수로
변환하고 싶은것인데요..
예를들어 char a[]={1,2,3}이면 이것을 정수형 배열 b[]={1,2,3}으로
바꾸고 싶은것인데요 왜 이렇게 하냐면
입력받은 각각의 숫자를 비교할 필요가 있거든요
a[0] = 1, a[1] = 2, b[2] = 3처음 문자배열은 입력받는것입니다.
b[0] = 1, b[1] = 2, b[2] = 3이런식으로 들어가야지 돼는데
문자 배열을 숫자배열로 일대일로 대응하게 만들고 싶은데 참 어렵내요..
Forums:
무슨 언어로
무슨 언어로 프로그래밍을 하는지부터 올려야 사람들이 답변을 해주죠.
아마도 C 인 것 같은데, C에서 문자에 대한 포인터와 문자열이 어떤 관계에 있는지 먼저 공부하시면 의문이 쉽게 풀릴 겁니다.
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
그대에게 전해주오-_-;
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
인용:만약에
그게 아니라 "123"이라는 문자열은 {'1','2','3','\0'} 으로 초기화한 문자 배열과 같은 메모리 구조를 가지는 것이죠.
'0' 과 '\0' 은 다릅니다.
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
그대에게 전해주오-_-;
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
그대에게 전해주오-_-;
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
그대에게 전해주오-_-;
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
그대에게 전해주오
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
답변아 달려라
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
왜 잘못된 내용이
왜 잘못된 내용이 포함된 답변을 반복해서 다시는 겁니까?
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
문자열에는
문자열에는 종료문자라는것이 있습니다.
만약에 "123"이라는 문자열이 있다면 실제로는 '1','2','3','0' 이되는것이죠
즉 마지막에 0이 붇습니다 문자열이 끝났다는 의미로
atoi는 이러한 문자열을 숫자로 바꿔주는 역활을 합니다 문자를 숫자로 바꿔주는것이 아니라요
즉 배열에 1,2,3 이렇게 저장되어 있으면 처음 호출시 123으로 바꿔버립니다
다음에 한칸 전진했으니 23 이되겠죠?
원하시는 결과를 낼려면 아스키 코드표를 보시면 됩니다.
간단하게 답만 알려드리면
b[count] = a[count] - '0';
이렇게 하면 됩니다 반드시 아스키 코드표를 보세요
무슨의도에의해
무슨의도에의해 저렇게 하셨는지 알순 없지만..
배열에 들어있는 문자를 찍으려면 그냥 printf( "%c", a[i] ); 로찍으면되죠.
%d 로찍은것부터가 뭔가 이상한길로 접어들죠?
----------------------------------------------------------------------------
C Library Development Project
----------------------------------------------------------------------------
제가 원하는것은
제가 원하는것은 예를들어 숫자 123을 입력받았을때 입력 받는것은
char형입니다 그런데 그숫자를 각각 대응하는 int형 변수로 변환하고 싶은것인데요..
예를들어 char a[]={1,2,3}이면 이것을 정수형 배열 b[]={1,2,3}으로 바꾸고 싶은것인데요 왜 이렇게 하냐면
입력받은 각각의 숫자를 비교할 필요가 있거든요
b[0] = 1, b[1] = 2, b[2] = 3이런식으로 들어가야지 돼는데
문자 배열을 숫자배열로 일대일로 대응하게 만들고 싶은데 참 어렵내요..
atoi
atoi 를 쓰세요...
아님 윗분 말대로..'0' 빼시면..
>>제가 원하는것은
>>제가 원하는것은 예를들어 숫자 123을 입력받았을때 입력 받는것은
>>char형입니다 그런데 그숫자를 각각 대응하는 int형 변수로 변환하고 싶은것인데요..
음.. 설계가 삼천포로 빠지고 있다는 느낌이 드는군요..
공부가 목적이면 string 에대해 조금더 공부하시면 될듯하고..
무엇을 만들목적이시면.. 숫자를 입력받아 숫자를 문자처럼 문자단위로 나누어 배열에 저장 한다는건 매우 이상한방법이군요..
문자란 이미 숫자로 저장되어 있는것입니다 궂이 int 타입으로 바꾸지 않더라도 이미 숫자처럼 사용할수도 있다는 말이죠..
48이 더해져 있다는 사실만 생각하고 있으면 말입니다.
----------------------------------------------------------------------------
C Library Development Project
----------------------------------------------------------------------------
글다는 순간 DB가
글다는 순간 DB가 오작동했나 봅니다.
글쓰고 '댓글쓰기'버튼을 한번 눌렀을때 반응이 없어서 계속 누르면 저런 현상이 벌어지죠.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
추가로
추가로 답변드리자면
첫번째에 123이 나오는 것은 문자열 "123"을 그대로 다 atoi()에 넣었기 때문이죠.
두번째에 23이 나오는 것은 문자열 "123" 중 2부터 시작되는 지점을 넣었기 때문이 atoi()에는 "23"이 들어가고
마지막은 3이 시작되는 지점을 넣었으므로 atoi()에는 "3"만 들어간 것입니다.
문자열내의 각 문자를 별도 문자열로 분리하는 작업이 필요합니다.
"123" -> "1", "2", "3" 식이죠. 그리고 끝에 NULL을 붙여줘야 하는건 아시죠.
아니면 직접 변환시키세요. 숫자 0~9는 ASCII 코드 0x30~0x39 사이 값입니다.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
조금만 고민하시면 될텐데..^^;
하긴 이걸 예전에 애들에게 시켰더니...
몇시간을 끙끙돼도 못하더라구요...
두줄짜리 소스를 보여주니 더욱 이해를 못한다는...
ㅋㅋㅋ.
Hello World.
제가 질문을 제대로
제가 질문을 제대로 이해한거라면
간단하게 이런식으로 하면 되지 않나요?
p.s 코드 넣는 태그가 이상한지 중간에 줄바뀜되네요..
댓글 달기