Преобразование каждого символа строки в число - C (СИ)

Формулировка задачи:

Здравствуйте, Пытаюсь сделать программу которая принимает аргумент строки, но затем эту строку (массив символов) нужно перебрать посимвольно и каждый символ char преобразовать в int и вывести на печать в новой строке (или произвести с ним арифмет. действия).
#include <stdio.h>
#include <stdlib.h>
 
 
 
 
 
int main (int argc, char* argv[])
 
 
{
  if (argc!=2 && argc!=3)
   
    {
   printf("Wrong\n");
 
            return 1;
 
    }
   
   char* str=argv[1];
 
 
   
 
   for(int i=0;; i=i+1)
 
    {
    if(str[i]=='\0')
   
        {    
          break;        
                 }
 
   int x= (int)atoi(str[i]);
 
 
    printf("%i\n",x) ;
 
        }
 
 
 
    return 0;
 
}
Но данный код не работает, при компиляции жалуется, что в строке int x= (int)atoi(str[i]); не хватает символа & перед str[i]. Если вставить этот символ - программа компилируется, но результат выдает не тот который требуется. С этим символом результат таков: вводим 123; вывод 123 23 3 А необходимо вывод: 1 2 3 Подскажите, пожалуйста в чем ошибка и как грамотно написать алгоритм?

Код к задаче: «Преобразование каждого символа строки в число - C (СИ)»

textual
for(int i = 0; str[i] != '\0'; i++)
        printf("%i\n", (str[i]-'0')) ;

7   голосов, оценка 4.143 из 5


СОХРАНИТЬ ССЫЛКУ