Почему в этом коде atoi()
Функция не работает должным образом и почему компилятор выдает эту ошибку:
инициализирующий аргумент 1 `int atoi (const char *) ‘
Мой код выглядит следующим образом:
#include <iostream.h>
#include <stdlib.h>
int main()
{
int a;
char b;
cin >> b;
a = atoi(b);
cout << "\na";
return 0;
}
b
является char
но в atoi()
ты должен пройти char *
или же const char *
так как с ++ является строгим языком проверки типов, следовательно, вы получаете это
Так должно быть cout<<"\n"<<a;
не это cout<<"\na"
потому что более поздний не будет печатать значение
Как вы можете видеть здесь atoi
Atoi получает указатель на символ вместо символа, как вы.
И это имеет смысл, потому что таким образом вы можете применить atoi к «числу» (представленному в строке) с более чем 1 цифрой, например atoi («100»);
int atoi ( const char * str );
В противном случае, если бы это был символ, вы могли бы конвертировать только «0», «1», «2» .. «9».
РЕДАКТИРОВАТЬ: попробуйте этот пример:
#include <iostream>
#include <stdlib.h>
int main()
{
int a;
char b[10];cin >> b;
a = atoi(b);
cout<<"\n"<<a;
return 0;
}