네자리 숫자 스트링 a에 대해서 각 자리수의 합을 출력하는 프로그램을 만드려고 하는데
(a="1234"면 1+2+3+4=10 출력)
int b = 0;
for (int i = 0; i < 4; i++)
b += atoi(a[i]);
cout << b;
'int atoi(const char *)' : 인수 1을(를) 'char'에서 'const char *'(으)로 변환할 수 없습니다.
"char" 형식의 인수가 "const char *" 형식의 매개 변수와 호환되지 않습니다.
이렇게 오류가 뜨네요. 이유가 뭔가요??
atoi(a[i]); => (int)a[i] -48
그러니까 씨쁠쁠 말고 갓클로저 합시다.
잘 되네요 감사합니다. 혹시 atoi가 안되는 이유 설명해 주실수 있나요
(#(reduce + (map (comp read-string str) %))
에러 메세지를 신중하게 읽는 훈련을 하시는 것도 중요해요. 사실 지금 메세지가 다 말해 주고 있거든요?
atoi 함수는 char* 를 인풋으로 받는데, a[i] 는 char라서 안되요. 위에분 말씀하신 것처럼 a를 통째로 집어 넣으면 atoi 함수는 동작은 하겠 지요. 물론 본인이 원하는 결과는 아니겠지만.
Ja2//되요->돼요 (되어 = 돼임) [리듬 맞춤법 봇♬]
이게 무슨 C++이냐 완전 생 C코드구만 어디가서 C++ 쓴다고 얘기하지 말아라 - return 0;
for (int i = 0; i < 4; i++){char tmp[2] = {a[i],0}; b += atoi(tmp);}
공부 이제 막 시작한거 같은데 왜그려
걍 더블포인터로 처리하셈 char s; char** pa; *pa = a; for() { s = *(*pa)+i; b = atoi(&s);
atoi에 '문자 포인터' 넣어야 되는데 '문자'를 넣어서 안됨.
atoi() 가 주소값을 받아서 '\\0' 나올때까지, 변환하는겨, &a[i] 로 해야되고, 이때마다 1234, 234, 23, 4 를 반환한다.. 이해가 됨?
1234\0" 을 "1\\0", "2\\0", "3\\0", "4\\0" 으로 쪼개고, atoi(&a[i]) 로 하면 될듯..