저는 C언어를 독학하고 있는 코린이입니다 문제 풀이 사이트에서 문제들을 푸는데 이런 문제가 있습니다
"
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
"
그래서 아래와 같이 코딩했는데 계속 워닝이 뜨는군요...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int num1, num2, num3, i, count;
char sum[9];
char i_char;
count = 0;
scanf(" %d %d %d", &num1, &num2, &num3); // 변수 3개를 받아서 곱한다
sprintf(sum, "%d", num1*num2*num3);
for(i=0; i<10; i++) { // 0~9까지 sum에 얼마나 들어가 있는지 새어서 count에 저장
sprintf(i_char, "%d", i); // 정수 i를 i_char로 변환
char *ptr = strchr(sum, i_char);
while(ptr != NULL) {
ptr = strchr(ptr + 1, i_char);
count++;
}
i = atoi(i_char); // i_char을 다시 정수i로 변환
printf("count: %d\n", count);
count = 0;
}
}
======
아래는 워닝 내용입니다
====
03_숫자의 개수.c: In function ‘main’:
03_숫자의 개수.c:13:17: warning: passing argument 1 of ‘sprintf’ makes pointer from integer without a cast [-Wint-conversion]
13 | sprintf(i_char, "%d", i); // 정수 i를 i_char로 변환
| ^~~~~~
| |
| char
In file included from 03_숫자의 개수.c:1:
/usr/include/stdio.h:334:38: note: expected ‘char * restrict’ but argument is of type ‘char’
334 | extern int sprintf (char *__restrict __s,
| ~~~~~~~~~~~~~~~~~^~~
03_숫자의 개수.c:19:18: warning: passing argument 1 of ‘atoi’ makes pointer from integer without a cast [-Wint-conversion]
19 | i = atoi(i_char); // i_char을 다시 정수i로 변환
| ^~~~~~
| |
| char
In file included from 03_숫자의 개수.c:3:
/usr/include/stdlib.h:104:30: note: expected ‘const char *’ but argument is of type ‘char’
104 | extern int atoi (const char *__nptr)
| ~~~~~~~~~~~~^~~~~~
03_숫자의 개수.c:13:9: warning: ‘i_char’ may be used uninitialized in this function [-Wmaybe-uninitialized]
13 | sprintf(i_char, "%d", i); // 정수 i를 i_char로 변환
| ^~~~~~~~~~~~~~~~~~~~~~~~
어떻게 고쳐야 할까요?